概述
Matplotlib库由各种可视化类构成, 其 matplotlib.pyplot是绘制各类可视化图形的命令子库(相当于快捷方式)。
其引入方式为:
1
| import matplotlib.pyplot as plt
|
快速使用:
1 2 3
| plt.plot([3, 2.3, 4, 5, 2]) plt.ylabel("grade") plt.show()
|
输出结果:

1 2 3
| plt.plot([0, 2, 4, 5.5, 8], [-1, -3, 0, 3, 9]) plt.axis([-1, 10, -5, 10])
|
输出结果:

plot 函数
用法:plot.plot(X轴数据, Y轴数据,format_string, **kwargs)
其中,format_string:控制曲线的格式字符串,可选,由颜色字符、风格字符、标记字符组成:
- 颜色字符如:
b:蓝色;#008000:RGB某颜色;0.8:灰度值字符串;… - 风格字符如:
-:实线;::虚线;… - 标记字符,在曲线中每一个数据点的标记符号,如:
.:点标记;o:实心圈标记;v:倒三角标记;…
1 2 3 4 5 6
| x = np.arange(10) plt.plot(x, x * 1.5, 'bo-', x, x * 2.5, 'rx', x, x * 3.5, '*', x, x * 10, 'y-.') plt.show()
|
输出结果:

pyplot的子绘图区域
输出结果:

1 2 3 4 5 6 7 8 9 10 11
| import numpy as np def energy_degradation(t): return np.exp(-t) * np.cos(2* np.pi * t)
x = np.arange(0.0, 5.0, 0.02) plt.subplot(2, 1, 1) plt.plot(x, energy_degradation(x))
plt.subplot(2, 1, 2) plt.plot(x, np.cos(x), 'r--') plt.show()
|
输出结果:

GridSpec类辅助网格设计
1 2 3 4 5 6 7 8
| import matplotlib.gridspec as gridspec
gs = gridspec.GridSpec(3, 3) ax1 = plt.subplot(gs[0, :]) ax2 = plt.subplot(gs[1, :-1]) ax3 = plt.subplot(gs[1:, -1]) ax4 = plt.subplot(gs[2, 0]) ax5 = plt.subplot(gs[2, 1])
|
输出结果:

pyplot的中文显示
方法一:通过 rcParams 修改字体
方法二(推荐):在有中文输出的地方,增加属性:fontproperties
pyplot的文本显示函数
1 2 3 4 5 6 7 8 9
| x = np.arange(0.0, 5.0, 0.01) plt.title(r'正弦波实例 $y = cos(2\pi x)$', fontproperties='SimHei', fontsize=22) plt.xlabel('时间', fontproperties='SimHei', fontsize=20) plt.ylabel('振幅', fontproperties='SimHei', fontsize=20) plt.text(2, -0.75, r'$\mu=100$', fontsize=15)
plt.grid(True) plt.plot(x, np.cos(2 * np.pi * x), 'r--') plt.show()
|
输出结果:

1 2 3 4 5 6 7
| plt.plot([3, 2.3, 4, 5, 2]) plt.ylabel("grade") plt.grid(True)
plt.annotate(r'$\mu=100$', xy=(2, 4), xytext=(1.5, 4.5), arrowprops=dict(facecolor='black', shrink=0.1, width=1)) plt.show()
|
输出结果:

应用
plt.pie 函数绘制饼图
1 2 3 4 5 6 7 8 9
| plt.pie( [45, 30, 15, 10], explode=(0, 0.1, 0, 0), labels=['Chinese', 'Maths', 'English', 'Politics'], autopct='%1.2f%%', shadow=False, startangle=90 ) plt.show()
|
输出结果:

面向对象绘制散点图(官方推荐)
1 2 3 4 5
| ax = plt.subplot() ax.plot(np.random.randn(100), 10 * np.random.randn(100), 'o')
ax.set_title('Simple Scatter') plt.show()
|
输出结果:
