day04-matplotlib入门

matplotlib

在这里插入图片描述
在这里插入图片描述

Matplotlib 提供了一个套面向绘图对象编程的 API接口

是一款用于数据可视化的 Python 软件包,支持跨平台运行

它能够根据 NumPyndarray 数组来绘制 2D(3D) 图像,它使用简单、代码清晰易懂,深受广大技术爱好 者喜爱。

实列:绘制x轴为-50-50,y轴为x轴的平方的直方图

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(-50,51)
y = x ** 2

plt.plot(x,y)

在这里插入图片描述

一、matplotlib的基本方法

方法名说明
title()设置图表的名称
xlabel()设置x轴名称
ylabel()设置y轴名称
xticks(ticks,label,rotation)设置x轴的刻度,rotation旋转角度
yticks()设置y轴的刻度
show()显示图表
legend()显示图例
text(x,y,text)显示每条数据的值 x,y值的位置
1. 图表名称 plt.title()
plt.title("y= x^2的图表")
plt.plot(x,y)
  • 参数fontsize:设置标题的字体大小

在这里插入图片描述

默认不支持中文:missing from current font 字体丢失

需要设置字体:

plt.rcParams["font.sans-serif"] = ["下列中文字体名称"]
#如
plt.rcParams['font.sans-serif'] = ["FangSong"]
plt.rcParams['font.sans-serif'] = ["SimHei"]
中文字体说明
‘SimHei’中文黑体
‘Kaiti’中文楷体
‘LiSu’中文隶书
‘FangSong’中文仿宋
‘YouYuan’中文幼圆
STSong华文宋体

但出现了新的问题,负号识别不了,因此还需要设置

不适用unicode的负号 axis的复数-axes,表示所有坐标轴

plt.rcParams['axes.unicode_minus'] = False

完整的运行一遍

import matplotlib.pyplot as plt
# 引入numpy包
import numpy as np


# 获得-50到50之间的ndarray对象
x = np.arange(-50,51)
plt.title("y等于x的平方")
plt.rcParams['font.sans-serif'] = ["FangSong"]
# 用来设置字体样式以正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False
# 默认是使用Unicode负号,设置正常显示字符,如正
plt.plot(x,y)

在这里插入图片描述

2.x轴和y轴名称

注意,只对下一次绘画有作用

xlable("x轴名称")
ylable("y轴名称")
# 设置x轴名称
plt.xlabel("x 轴",fontsize = 18)
# 设置y轴名称
plt.ylabel("y 轴",fontsize = 20)

plt.plot(x,y)

参数:

  • fontsize:设置字体大小

在这里插入图片描述

3.设置线条粗细

plt.plot(x,y,linewidth = 5)

在这里插入图片描述

绘制两条线段

# 创建x为-10到10的整数
x = np.arange(-10,10)
# y是x的平方
y1 = x ** 2
y2 = x ** 1
# 设置标题
plt.title('坐标系',fontsize=16)
# 设置x轴名称 ,值不能写"12px"
plt.xlabel("x 轴",fontsize=12)
# 设置y轴名称
plt.ylabel("y 轴")
plt.plot(x, y1,linewidth=5)
plt.plot(x, y2,linewidth=1)

在这里插入图片描述

4. 设置x轴和y轴的刻度

matplotlib.pyplot.xticks(ticks=None, labels=None, **kwargs)
matplotlib.pyplot.yticks(ticks=None, labels=None, **kwargs)
  • ticks: 此参数是xtick位置的列表。和一个可选参数。如果将一个空列表作为参数传递,则它将删除所有xticks
  • label: 此参数包含放置在给定刻度线位置的标签。它是一个可选参数。,
  • **kwargs:此参数是文本属性,用于控制标签的外观
    • rotation:旋转角度 如:rotation=45
    • color:颜色 如:color=“red”

xticks到底有什么用,其实就是想把坐标轴变成自己想要的样子

对于数值型的x轴或y轴,可以给ticks传一个数值列表,

对于字符型的x轴或y轴数据,可以给ticks传一个序号列表

times = ['2015/6/26', '2015/8/1', '2015/9/6', '2015/10/12', '2015/11/17','2015/12/23','2016/1/28','2016/3/4','2016/4/9',
'2016/5/15','2016/6/20','2016/7/26','2016/8/31','2016/10/6','2016/11/11','2016/12/17']

# 随机出销量
sales =np.random.randint(500,2000,size=len(times))

# 绘制图形
plt.plot(times,sales)

作图后,其x轴会全部显示,显得杂乱,就需要ticks剔除部分

在这里插入图片描述

# 如果想只显示部分时间,或者按照某个规则展示,如何处理,这个时候就用到xticks
plt.xticks(range(0,len(times),3))#每隔3个显示x轴信息。
plt.plot(times,sales)

在这里插入图片描述

plt.xticks(range(0,len(times),3),rotation = 45,color = 'red')#每隔3个显示x轴信息。且将x轴信息旋转45度角,显示为红色
plt.plot(times,sales)

在这里插入图片描述

想要将x轴的信息自定义,则使用labels参数

plt.xticks(range(0,len(times),2),labels= range(1,9))
#labels元素不够时,将为空,不显示
plt.plot(times,sales)

在这里插入图片描述

还可以单独使用并按照想要的格式

x_titcks  =range(0,15,2)
x_labels = ['%s月'%i for i in x_titcks]
plt.xticks(x_titcks,x_labels)
plt.plot(times,sales)

在这里插入图片描述

  • 注意,当x轴数据不是str_类型,它可以自动无遮挡显示
times = range(10,50)
sales =np.random.randint(500,2000,size=len(times))

plt.plot(times,sales)

在这里插入图片描述

times = range(10,100)
sales =np.random.randint(500,2000,size=len(times))


plt.plot(times,sales)

在这里插入图片描述

当x轴时str_类型时,则会全部显示

times = np.arange(10,50).astype(np.str_)
sales =np.random.randint(500,2000,size=len(times))

plt.plot(times,sales)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一般使用下列语句减少显示数量

plt.xticks(range(0,len(times),2))

在这里插入图片描述

4.显示图表show()

  • 显示所有打开的图形。

jupyter notebooks会自动显示图形

而一般的python交互模式需要

# 如果在jupyter中也想出现图形操作菜单,可以使用matplotlib中的魔术方法
%matplotlib notebook

# 如果有想回去原先的展示,使用另一个 %matplotlib inline
%matplotlib inline

5.图例 legend()

图例是集中于地图一角或一侧的地图上各种符号和颜色所代表内容与指标的说明,有助于更好的认识地图。

在这里插入图片描述

# 每个时间点的销量绘图
times = ['2015/6/26', '2015/8/1', '2015/9/6', '2015/10/12']

# 随机出收入
income =np.random.randint(500,2000,size=len(times))
# 支出
expenses =np.random.randint(300,1500,size=len(times))

# 绘制图形
# 注意,在使用图例前为每个图形设置label参数
plt.plot(times,income,label="收入")
plt.plot(times,expenses,label="支出")
# 默认会使用每个图形的label值作为图例中的说明
plt.legend()

在这里插入图片描述

5.1图例的图例位置设置

  • loc代表了图例在整个坐标轴平面中的位置(一般选取’best’这个参数值)
    • 第一种:默认是"best",图例自动‘安家’在一个坐标面内的数据图表最少的位置
    • 第二种: loc = ‘XXX’ 分别有0: ‘best’ (自动寻找最好的位置)
位置字符串位置值备注
“best”0自动寻找最好的位置
“upper right”1右上角
“upper left”2左上角
“lower left”3左下角
“lower right”4右下角
“right”5右边中间
“center left”6左边中间
“center right”7右边中间
“lower center”8中间最下面
“upper center”9中间最上面
“center”10正中心

在这里插入图片描述

plt.legend(loc = 'center')

6.显示每条数据的值 x,y值的位置

plt.text(x,y,  string,  fontsize=15,  verticalalignment="top",  horizontalalignment="right")
  • x,y:表示坐标值上的值
  • string:表示说明文字
  • fontsize:表示字体大小
  • verticalalignment:(va)垂直对齐方式 ,参数:[ ‘center’ | ‘top’ | ‘bottom’ | ‘baseline’ ]
  • horizontalalignment:(ha)水平对齐方式 ,参数:[ ‘center’ | ‘right’ | ‘left’ ]

plt.text()一次只能描绘一个点的信息

因此需要使用循环

for x,y in zip(times,income):
    plt.text(x,y,'%s万'%y)
    
for a,b in zip(times,expenses):
    plt.text(a,b,b)

在这里插入图片描述

总结:

  • x轴是数值型,会按照数值型本身作为x轴的坐标
  • x轴为字符串类型,会按照索引作为x轴的坐标

labels的注意点:

time=np.arange(2000,2020).astype(np.str_)
sales = [109, 150, 172, 260, 273, 333, 347, 393, 402, 446, 466, 481, 499,504, 513, 563, 815, 900, 930, 961]
plt.xticks(range(0,len(time),2),labels=['year%s'%i for i in time],rotation=45,color="red")
#plt.xticks(range(0,len(time),2),labels=['year%s'%time[i] for i in range(0,len(time),2)],rotation=45,color="red")
plt.yticks(color="blue")
plt.plot(time,sales)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/775251.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

云计算渲染时代:选择Blender或KeyShot进行高效渲染

在云渲染技术日益成熟的背景下,挑选一款贴合项目需求的3D渲染软件显得尤为关键。当前,Blender与KeyShot作为业界领先的全能渲染解决方案,广受推崇。它们虽皆能创造出令人信服的逼真视觉效果,但在特色功能上各有所长。本篇文章旨在…

加装德国进口高精度主轴 智能手机壳「高质量高效率」钻孔铣槽

在当前高度智能化的社会背景下,智能手机早已成为人们生活、工作的必备品,智能手机壳作市场需求量巨大。智能手机壳的加工过程涉及多个环节,包括钻孔和铣槽等。钻孔要求精度高、孔位准确,而铣槽则需要保证槽位规整、深度适宜。这些…

利用C语言实现三子棋游戏

文章目录 1.游戏界面2.游戏内容2.1 棋盘类型2.2棋盘的初始化2.3 打印棋盘的界面展示 3.游戏操作3.1 玩家操作3.2 电脑操作3.3 胜负判定 4.代码整合 1.游戏界面 无论写任何程序,我们都需要先去了解它的大概框架,这里我们先把它的初始界面写出来。一个游戏…

自动化设备上位机设计 二

目录 一 设计原型 二 后台代码 一 设计原型 二 后台代码 namespace 自动化上位机设计 {public partial class Form1 : Form{public Form1(){InitializeComponent();timer1.Enabled true;timer1.Tick Timer1_Tick;}private void Timer1_Tick(object? sender, EventArgs e)…

「媒体邀约」天津媒体资源?媒体邀约宣传报道

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 媒体宣传加速季,100万补贴享不停,一手媒体资源,全国100城线下落地执行。详情请联系胡老师。 天津拥有丰富的媒体资源,利用这些资源进行有效…

数智化配补调:零售品牌增长新引擎

随着科技的不断进步和消费者需求的日益个性化、多元化,传统服装行业正面临着前所未有的挑战与机遇。在这个快速变化的时代,如何精准把握市场脉搏,实现库存的高效管理,成为了服装品牌生存与发展的关键。数智化配补调策略应运而生&a…

Java后端每日面试题(day3)

目录 Spring中Bean的作用域有哪些?Spring中Bean的生命周期Bean 是线程安全的吗?了解Spring Boot中的日志组件吗? Spring中Bean的作用域有哪些? Bean的作用域: singleton:单例,Spring中的bean默…

重载一元运算符

自增运算符 #include<iostream> using namespace std; class CGirl { public:string name;int ranking;CGirl() { name "zhongge"; ranking 5; }void show() const{ cout << "name : "<<name << " , ranking : " <…

卫星轨道平面简单认识

目录 一、轨道平面 1.1 轨道根数 1.2 应用考虑 二、分类 2.1 根据运行高度 2.2 根据运行轨迹偏心率 2.3 根据倾角大小 三、卫星星座中的轨道平面 四、设计轨道平面的考虑因素 一、轨道平面 1.1 轨道根数 轨道平面是定义卫星或其他天体绕行另一天体运动的平面。这个平…

小白 | Linux安装python3

一、更新包列表 首先&#xff0c;确保你的包管理器是最新的&#xff1a; sudo apt update 二、安装 Python 3 安装 Python 3 以及常用的开发工具 sudo apt install python3 python3-pip python3-venv 三、验证安装 python3 --version

如何在 SwiftUI 中熟练使用 sensoryFeedback 修饰符

文章目录 前言背景介绍平台支持仅支持watchOS支持watchOS和iOS 基本用法预定义样式根据触发器值选择样式使用场景当值更改时触发使用条件闭包触发使用反馈闭包触发 可以运行 Demo总结 前言 SwiftUI 引入了新的 sensoryFeedback 视图修饰符&#xff0c;使我们能够在所有 Apple …

【数据结构】(6.2)堆的应用——Top-K问题(C语言)

系列文章目录 文章目录 系列文章目录问题引入一、TopK 问题 是什么&#xff1f;二、TopK 问题解决思路2.1 TopK 思路2.2 随机产生数字2.2 完整代码2.3 验证结果 问题引入 TopK 问题 (在一堆数据里面找到前 K 个最大 / 最小的数)。 一、TopK 问题 是什么&#xff1f; 生活中也…

Linux_fileio学习

参考韦东山老师教程&#xff1a;https://www.bilibili.com/video/BV1kk4y117Tu?p12 目录 1. 文件IO函数分类2. 函数原型2.1 系统调用接口2.2 标准IO接口 3. fileio内部机制3.1 系统调用接口内部流程3.1 dup函数使用3.2 dup2函数使用 4. open file4.1 open实例4.2 open函数分析…

【matlab】智能优化算法——基准测试函数

智能优化算法的基准测试函数是用于评估和优化算法性能的一组标准问题。这些测试函数模拟了真实世界优化问题的不同方面&#xff0c;包括局部最小值、全局最优解、高维度、非线性、不连续等复杂性。以下是对智能优化算法基准测试函数的详细归纳&#xff1a; 测试函数的分类&…

任天堂称未来第一方游戏不会使用生成式AI

虽然EA、育碧、暴雪、Embracer等西方游戏厂商都大力支持生成式AI技术&#xff0c;但日本老牌游戏公司任天堂并不会追随这一步伐。任天堂已经确认该公司未来的第一方游戏不会使用生成式AI技术。 在公司最近的投资人问答会上&#xff0c;任天堂描绘了公司未来游戏愿景。在谈到AI技…

秋招突击——7/5——设计模式知识点补充——适配器模式、代理模式和装饰器模式

文章目录 引言正文适配器模式学习篮球翻译适配器 面试题 代理模式学习面试题 装饰器模式学习装饰模式总结 面试题 总结 引言 为了一雪前耻&#xff0c;之前腾讯面试的极其差&#xff0c;设计模式一点都不会&#xff0c;这里找了一点设计模式的面试题&#xff0c;就针对几个常考…

图书馆数据仓库

目录 1.数据仓库的数据来源为业务数据库&#xff08;mysql&#xff09; 初始化脚本 init_book_result.sql 2.通过sqoop将mysql中的业务数据导入到大数据平台&#xff08;hive&#xff09; 导入mysql数据到hive中 3.通过hive进行数据计算和数据分析 形成数据报表 4.再通过sq…

一次建表语句触发的ORA-600报错分析

​ 某次在客户Oracle数据库执行一条建表语句时&#xff0c;报出ORA-600错误。 报错代码如下&#xff1a; ORA-00600: 内部错误代码, 参数: [rwoirw: check ret val], [], [], [], [], [], [], [], [], [], [], [] 相关的建表语句如下&#xff1a; ​ 在报错发生后&#xff0c;…

研0学习Python基础4

1.数组是一种存储大量同性质数据的连续内存空间&#xff0c;只要使用相同的变量名称&#xff0c;便可以连续访问 每一组数据。由于数组元素的便利性&#xff0c;使得大多数程序中都可以看到数组的身影。数组是一 个带有多个数据且模式相同的元素集合。比如&#xff0c;数值所…

Python + 在线 + 文生音,音转文(中文文本转为英文语音,语音转为中文文本)

开源模型 平台&#xff1a;https://huggingface.co/ars-语言转文本: pipeline("automatic-speech-recognition", model"openai/whisper-large-v3", device0 ) hf: https://huggingface.co/openai/whisper-large-v3 github: https://github.com/openai/wh…