贡献者: addis
1. python 绘图库 matplotlib 的使用
python 绘图有很多库,其中 matplotlib 库是最受欢迎的绘图库。如果熟悉 Matlab 软件的用户,对 matplotlib 库就很容易上手,因为 matplotlib 中很多命令命名与用法与 matlab 十分类似。首先在使用之前需要导入模块,并取别名 plt。
conda 安装 Matplotlib:conda install -c conda-forge matplotlib
如果使用 jupyter 等在线编辑器,可能需要加入
来告诉解释器在浏览器中显示图像。现在我们来看看如何使用这个库。例如在 [0,5] 区间均匀取 30 个点,分别计算 与 ,并作图
上述代码通过
hold
把两个图像放在一张画布上面,如
图 1 所示。
图 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)
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()
先看一下效果图
图 2:matplotlib 库的基本使用
- 代码 1-3 行先导入需要使用的 python 库
- 5-6 行对字体进行设置,默认情况下中文不显示
- 7 行在一个画布上面划分两行一列的区域,并将后续作图显示在第一个区域
- 8-11 行产生 xy 数据
- 12,13 行分别绘制曲线图与散点图,
ls
是 linestyle
缩写,lw
是 linewidth
缩写,c
是 color
,label
是图例名称
- 15-19 行分别限制坐标轴范围,设置坐标轴名称,已经添加网格线操作。
- 后续代码,相关说明可以看源码注释部分
致读者: 小时百科一直以来坚持所有内容免费无广告,这导致我们处于严重的亏损状态。 长此以往很可能会最终导致我们不得不选择大量广告以及内容付费等。 因此,我们请求广大读者
热心打赏 ,使网站得以健康发展。 如果看到这条信息的每位读者能慷慨打赏 20 元,我们一周就能脱离亏损, 并在接下来的一年里向所有读者继续免费提供优质内容。 但遗憾的是只有不到 1% 的读者愿意捐款, 他们的付出帮助了 99% 的读者免费获取知识, 我们在此表示感谢。