author:xiao黄
缓慢而坚定的生长
写这篇文章是因为自己以后肯定要用到 这方面的知识,所以把一些学到的知识先整理好,方便以后查看,以及希望对你们有所帮助。
1.基本内容
Matplotlib 是一个 Python 的 2D(包括3D)绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。
通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等。
2.安装
使用python安装
pip install matplotlib
或者使用anaconda安装
conda install matplotlib
3.Matplotlib三层结构
一般导入包的时候将matplotlib.pyplot as plt
import matplotlib.pyplot as plt
- 容器层
1画板层(canvas)
2画布层(Figure):plt.figure()
3绘图区/坐标系axex:plt.subplots() - 辅助显示层
- 图像层
4.设置图属性以及图片保存
plt.figure(figsize=(), dpi=)
figsize:指图片的长宽
dpi:图像的清晰度
返回fig图像
# 例子
plt.figure(figsize=(20,8), dpi=80)
# 图片保存
plt.savefig(path) # path 为保存的路径,自定义
注意:plt.show()会释放资源,如果在显示图像之后保存图片将只保存空图片。
4.1例子
import matplotlib.pyplot as plt
# 例子1
plt.figure() # 创建一个空图
plt.plot([1,0,9],[4,5,6]) # 横纵坐标
plt.show() # 展示
结果:
5.自定义x,y刻度
- plt.xticks(x, **kwargs)
x:要显示的刻度值 - plt.yticks(y, **kwargs)
y:要显示的刻度值
6.添加网格显示
plt.grid(True, linestyle='--', alpha=0.5)
# alpha 透明度
7.添加描述信息
# 添加x轴,y轴描述以及标题
plt.xlabel('time')
plt.ylabel('temperature')
plt.title('Schematic diagram of temperature changes between 11 and 12 noon in Shanghai and Beijing')
8.设置图形风格
9.显示图例
plt.legend()
可以调节图例的位置,一般使用下面这个:
plt.legend(loc='best')
下面列出一些,还有的可以参考官方文档:
10.在同一个图显示多个曲线
代码已经的注释已经很清楚了,还有不懂的欢迎留言或者私信。
# 例子3 在同一个图显示
import matplotlib.pyplot as plt
import random
x = range(60)
y = [random.uniform(15,18) for i in x] # 假设是上海
z = [random.uniform(0,3) for i in x] # 假设是北京
plt.figure(figsize=(20,8), dpi=80) # 图片大小,清晰度
plt.plot(x,y, color='r', linestyle='--', label='Shanghai') # 可以修改颜色、线条风格、图例
plt.plot(x,z, color='b', label='Beijing')
plt.legend() # 显示图例
x_label = ['11:{}'.format(i) for i in x]
plt.xticks(x[::5],x_label[::5]) # 修改x的刻度
plt.yticks(range(0,40,5)) # 修改y的刻度
# 添加网格显示
plt.grid(True, linestyle='--', alpha=0.5)
# 添加x,y轴描述信息及标题
plt.xlabel('time')
plt.ylabel('temperature')
plt.title('Schematic diagram of temperature changes between 11 and 12 noon in Shanghai and Beijing')
plt.show()
结果显示:
11.一个界面显示多个图
主要是用到plt.subplots()函数,它返回两个对象,分别是figure和axes。
通过对axes画对应的坐标轴。
plt.subplots(nrows=1,ncols=2) # 一行两列
具体代码如下:
# 例子4 在不同的图显示
import matplotlib.pyplot as plt
import random
x = range(60)
y = [random.uniform(15,18) for i in x] # 假设是上海
z = [random.uniform(0,3) for i in x] # 假设是北京
# 创建画布
figure,axes = plt.subplots(nrows=1,ncols=2, figsize=(20,8), dpi=80)
# 绘图
axes[0].plot(x,y, color='r', linestyle='--', label='Shanghai') # 可以修改颜色、线条风格、图例
axes[1].plot(x,z, color='b', label='Beijing')
# 显示图例
axes[0].legend()
axes[1].legend()
# 修改刻度
x_label = ['11:{}'.format(i) for i in x]
axes[0].set_xticks(x[::5]) # 修改x的刻度
axes[0].set_xticklabels(x_label[::5])
axes[0].set_yticks(range(0,40,5)) # 修改y的刻度
axes[1].set_xticks(x[::5]) # 修改x的刻度
axes[1].set_xticklabels(x_label[::5])
axes[1].set_yticks(range(0,40,5)) # 修改y的刻度
# 增加网格显示
axes[0].grid(True, linestyle='--', alpha=0.5)
axes[1].grid(True, linestyle='--', alpha=0.5)
# 添加描述信息
axes[0].set_xlabel('time')
axes[0].set_ylabel('temperature')
axes[0].set_title('Schematic diagram of temperature changes between 11 and 12 noon in Shanghai')
axes[1].set_xlabel('time')
axes[1].set_ylabel('temperature')
axes[1].set_title('Schematic diagram of temperature changes between 11 and 12 noon in Beijing')
# 显示图片
plt.show()
结果显示: