matplotlib
是一款Python的绘图库,用于做数据的可视化图表。
基础用法
我们从一个最简单的图开始。
示例代码:
1 | # 导入pyplot |
运行结果:
当然,除了这些,还有更多的方法,我们介绍几个常用的方法。
设置图片大小
1 | plt.figure(figsize=(20,20),dpi=80) |
参数:
- figsize:长和宽
- dpi:清晰度
保存图片
1 | plt.savefig('test.png') |
特别注意:保存图片的方法必须在plt.plot(x,y)
之后,同时在plt.show()
之前。
- 肯定要先画图,所以要在
plt.plot()
之后。 plt.show()
后,实际上已经创建了一个新的空白的图片,这时候plt.savefig()
就会保存这个新生成的空白图片。所以要在plt.show()
之前。
或者,我们也可以用plt.gcf()
方法先保存到一个变量,例如fig
:
1 | # 传入x 和 y |
除了png
外,还可以保存为svg
等多种格式。
设置X或者Y轴上的刻度
设置刻度的范围
1 | plt.xticks(range(1,100)) |
1 | x_ticks = [ i/2 for i in range(1,20)] |
[ i/2 for i in range(1,20)]
属于列表推导式,关于列表推导式,在《基于Python的后端开发入门:1.基础语法》有讨论。
更多的刻度操作
- 添加别名
- 设置步长
- 标签旋转
示例代码:
1 | from matplotlib import pyplot as plt |
运行结果:
显示中文的方法
无法显示中文的原因
matplotlib
的默认字体不支持中文。
所以,想让其显示中文,方法是选择一个支持中文的字体。
选择支持中文的字体
有两种方法
- matplotlib.rc()
- font_manager
matplotlib.rc
示例代码:
1 | from matplotlib import pyplot as plt |
运行结果:
对于MacOS,可以参考如下的配置:
1 | plt.rcParams['font.sans-serif'] = ['Songti SC'] |
font_manager
示例代码:
1 | from matplotlib import pyplot as plt |
运行结果略。
补充:macOS系统查看字体的方法
命令如下:
1 | fc-list |
还可以添加参数查看支持中文的字体
1 | fc-list :lang=zh |
添加描述信息
1 | plt.xlabel('横轴') |
绘制网格
1 | # alpha用以控制网格的透明度 |
画两个折线图
画两个折线图,再用一次plot
即可。
1 | z = [random.randint(10,20) for i in range(120)] |
标记标签
同时,我们还可以用label
标签来标记线条名称,并用legend
方法贴上标签
1 | # 通过label配置标签 |
控制线条
控制线条形状
通过参数linestyle
控制线条形状
1 | plt.plot(x,y,c='red',label = '红线',linestyle='--') |
linestyle的取值如下:
字符 | 描述 |
---|---|
- |
实线 |
-- |
虚线 |
-. |
带点的虚线 |
: |
点线 |
在画网格的时候,也可以用linestyle
控制线条形状。
控制线条的粗细
通过参数linewdith
控制线条粗细。
控制线条的颜色
通过c
控制颜色。
除了用颜色的名称(形如c='red'
)来控制颜色,还可以用十六进制的颜色。
更多图形
上述都是以折线图为例,matplotlib
除了可以绘制折线图,还可以绘制更多的图形。
散点图
散点图,基于plt.scatter
。
示例代码:
1 | from matplotlib import pyplot as plt |
运行结果略。
可以通过参数marker
控制点的形状。
条形图
绘制普通的条形图
普通的条形图,基于plt.bar
。
示例代码:
1 | from matplotlib import pyplot as plt |
运行结果略。
绘制横着的条形图
横着的条形图,基于plt.barh
。
h
的含义是"horizontal",水平的。
1 | plt.barh(x_lalel,y) |
绘制多次条形图
核心思想是:用x
控制位移。
示例代码:
1 | from matplotlib import pyplot as plt |
运行结果:
直方图
绘制直方图,基于plt.hist
。
示例代码:
1 | from matplotlib import pyplot as plt |
运行结果略。
绘制多个图形
分别绘制多个图形
1 | plt.subplot(2, 2, 1) |
第一个参数是nrows
(行),第二个参数是ncols
(列),第三个参数是index
(序号)。
示例代码:
1 | # 导入pyplot |
运行结果:
同时绘制多个图形
用相同的坐标轴
这种情况,只需要再用plt
画一次图即可。
示例代码:
1 | # 导入pyplot |
运行结果略。
用不同的y轴
这种情况需要用不同的Axes
。
1 | ax2 = ax1.twinx() |
示例代码:
1 | import numpy as np |
运行结果:
解释说明:ax2=ax1.twinx()
的作用是创建一个和ax1
共享X轴的ax2
,并将其绑定到同一个图表。这样做是为了将两个不同的图形组合在一起展示,让我们更直观地观察样本数据和理论曲线之间的差距。
有一些资料,还会介绍
matplotlib
中有专门用来画金融图表的模块matplotlib.finance
,实际上这个模块在2.2.0
及以上版本中已经被移除了。
当然,该模块有替代品,mpl_finance
,这里不介绍。