本文作者:钱梦璇
文字编辑:钱梦璇
技术总编:张 邯
导读
在以往的推文中,我们详细介绍了pyecharts库的画图方法,本篇采用的matplotlib是Python的另一个功能强大的绘图库,它可以呈现出2D的数据形式,还可以做成动画,只需要几行代码就可以生成各式各样的图形,对新手而言可谓十分友好。本文主要通过绘制数学函数,从而学习matplotlib图形的坐标轴、图例、画布等各个选项的设置。
多项式函数及其导数
导入matplotlib绘图库,一般情况下,不用import整个matplotlib模块,只需要调用pyplot模块。一般matplotlib要和numpy结合一起使用,因为数据需要用numpy来添加:
import matplotlib.pyplot as plt import numpy as np设定函数参数x的范围和x、y的方程式:
x=np.linspace(-5,5,100) y1=2*x**3+6*x**2+3*x+8 y2=6*x**2+12*x+3 y3=12*x+12其中,numpy的linspace方法指的是在指定的间隔内,返回均匀间隔的数字。在此设置的x范围为-5到5之间的100个点,y1为多项式函数,y2和y3分别为它的一阶和二阶导函数。
确定x轴范围为-5到5,y轴范围为-20到80,并设置坐标轴的名称:
#确定坐标轴范围 plt.xlim((-5,5))plt.ylim((-20,80))#设置x y轴的名称plt.xlabel('i am x') plt.ylabel('i am y')接下来开始画图,plot为绘制图像的函数:
plt.plot(x,y1,color='r',linewidth=1.5,label='y') plt.plot(x,y2,'b',linewidth=1.3,label="y'",linestyle='--') plt.plot(x,y3,'g-.',linewidth=1.0,label="y''") plt.legend() #用legend()表示不同图像的文本标签图例 plt.show()三个plot函数对应了三个函数图像,其中color设置了每个函数图像的颜色,linewidth设置了线的宽度,label为标记,linestyle设置线的显示形式。从每个plot函数的设定中可以看出,color和linestyle可以省去,同时(color='r'和linestyle='-.')可以简写为color='r-.'。
legend()
表示了不同函数图像的文本标签图例,如果没有
plt.legend(),label
就不会显示。要想显示图形,必须加上
plt.show()。
图形如下所示:

Sigmoid激活函数
在机器学习中,我们会经常遇到Sigmoid激活函数,通过绘制此函数图形更深刻地了解它。
import numpy as np import matplotlib.pyplot as plt# 正常显示中文标签 plt.rcParams['font.sans-serif'] = ['SimHei'] # 正常显示负号 plt.rcParams['axes.unicode_minus'] = False如果需要在图形中加入中文标签,并在图形中标记Sigmoid的函数形式,一般通过以上固定形式设置来正常显示中文标签和负号。
与上例相同,确定参数x的范围和函数方程:
x=np.linspace(-6,6,100) #数组的除法运算 y=np.divide(1,(1+np.exp(-x))) plt.plot(x,y,label='Sigmoid激活函数')其中,np.divide()表示对数组进行除法运算,即1除以1+np.exp(-x)。添加的标记“Sigmoid激活函数”中含有中文,所以要通过上述设置显示中文,且字体为“SimHei”。
用text函数设置标注,其中,数学公式必须用markdown格式编辑:
plt.text(-6,0.8,r'$\sigma=\frac{1}{1+e^{-x}}$') #在图形中显示标记 plt.legend() plt.show()
text
的前两个参数为标注的位置,表示在
(-6,0.8)
位置处
显示标注。图形如下所示:

这时,我们发现横纵坐标交叉点不是在原点
(0,0)
处,由于绘制的是数学函数,最好在直角坐标系下展示。那么可以使用
gca
函数
(get current axis)
将现在的坐标轴拿出来,再对其设置。
ax = plt.gca() ax.spines['right'].set_color("none") ax.spines['top'].set_color("none") ax.xaxis.set_ticks_position('bottom') ax.yaxis.set_ticks_position('left') ax.spines['bottom'].set_position(("data",0)) ax.spines['left'].set_position(("data",0))其中,ax.spines的四个参数“right”,“top”,“bottom”和“left”分别表示图形四个位置的边框,将右边和上边的边框颜色设置为None,即不显示右边和上边的边框。
ax.xaxis.set_ticks_position('bottom')和ax.yaxis.set_ticks_position('left')分别表示将x轴设置在上图边框的底部的线处,将y轴设置在上图边框的左边的线处。然后将左边和底部的线交点(即x和y轴交点)设定在原点(0,0)处,这样就设定为直角坐标系的格式。
最终绘制的函数图形如下所示:

以上两个
matplotlib
应用的小栗子,大家学会了嘛?赶快动手试试吧~

















