贡献者: addis
python 绘图有很多库,其中 matplotlib 库是最受欢迎的绘图库。如果熟悉 Matlab 软件的用户,对 matplotlib 库就很容易上手,因为 matplotlib 中很多命令命名与用法与 matlab 十分类似。首先在使用之前需要导入模块,并取别名 plt。
conda 安装 Matplotlib:conda install -c conda-forge matplotlib
import matplotlib.pyplot as plt
如果使用 jupyter 等在线编辑器,可能需要加入
% matplotlib inline
来告诉解释器在浏览器中显示图像。现在我们来看看如何使用这个库。例如在 [0,5] 区间均匀取 30 个点,分别计算 $ \sin\left(x\right) $ 与 $ \exp\left(x\right) $,并作图
A = np.linspace(0,5,30)
B = np.sin(A)
C = np.exp(-A)
plt.plot(A,B)
plt.hold(True)
plt.plot(A,C)
上述代码通过 hold
把两个图像放在一张画布上面,如图 1 所示。
下面给一个综合案例来详细说明这个库的具体使用。结果如图 2 所示。
import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mpl
mpl.rcParams["font.sans-serif"]=['kaiti']
mpl.rcParams['axes.unicode_minus']=False
plt.subplot(211)
x = np.linspace(0,10,1000)
y = np.cos(x)
x1 = np.linspace(0,10,20)
y1= np.cos(x1)
plt.plot(x,y, ls='-',lw='2',label='曲线图')
plt.scatter(x1,y1,c='b',label='散点图')
plt.xlim(-1,11)
plt.ylim(-1.1,1.1)
plt.xlabel('x轴',fontsize=20)
plt.ylabel('y轴',fontsize=20)
plt.grid(ls='-.',c='r')
#绘制平行坐标轴直线
plt.axhline(y=0,c='g',ls='-',lw=3)
plt.axvline(x=0,c='g',ls='-',lw=3)
#绘制垂直于坐标轴的区域
plt.axvspan(xmin=0,xmax=1,facecolor='y',alpha=0.5)#facecolor或者fcc
plt.axhspan(ymin=0,ymax=0.2,fc='r',alpha=0.5)
#添加箭头注释
plt.annotate('注释内容',
xy=(2,0),
xytext=(3,0.2),
weight='bold',
color='b',
fontsize=20,
arrowprops=dict(arrowstyle='->',
connectionstyle='arc3',
color='b'))
#添加文本注释
plt.text(2,0.8,r'普通文本 $\sin(\pi x)$',color='b',weight='bold',fontsize=20)
plt.title('图像标题',fontsize=20)
plt.legend(loc='upper right',title='图例标题',fontsize=20)#里面可有参数
plt.tick_params(labelsize=20)
plt.subplot(212)
plt.plot(x,y,'r-',lw=2)
plt.xticks([0,5,10],[r'$\pi$',r'$2\pi$','C'],rotation=20)
plt.ylim(1,-1)
plt.xlabel('自定义坐标刻度,倒序并旋转',fontsize=20)
plt.text(5,0,'MATPLOTLIB',size=20,rotation=30,
bbox=dict(boxstyle='round',edgecolor='r',facecolor='gray'))
plt.tick_params(labelsize=20)
plt.show()
先看一下效果图
ls
是 linestyle
缩写,lw
是 linewidth
缩写,c
是 color
,label
是图例名称