简介
Matplotlib是一个非常好用的python2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。我们仅需要通过对其函数的调用即可完成图形绘制,在函数的使用上与matlab有许多的相似之处,同时我们还可以使用面向对象的方法来对其进行控制。
图像组成
我们直接见到的窗口是一个Figure,它是我们见到的最大的界面,在这个界面里我们可以继续细分出若干个Subplot或者是Axes,使得布局更加灵活,可以放置多个子图,或者是在图中嵌入子图。还有需要注意的就是刻度Ticks了,由于我们的图像大多围绕着数据,所以我们需要利用好Ticks来对数据进行展示。
Figures
Figure就是我们所见的窗口,我们可以由这个类来设置并控制一些窗口参数,比如长和宽(figsize),分辨率(dpi),背景颜色(facecolor),是否显示边框(frameon),边框的颜色(edgecolor),默认是不需要设置这些值的,当你对这些有新的需求时,可以通过这些参数进行修改。而Figure类的调用由matplotlib.pyplot模块提供。也可以同时调用多个Figures,但是需要给它们不同的num编号。
Subplots
Subplot是方便我们进行布局的,我们可以通过pyplot模块的subplot函数来确定对图像的划分,比如subplot(221)表示划分为两行两列,共四个部分,而我们正在对第一个部分进行操作,第一个参数是行,第二个参数是列,行乘列进行编号,来确定对应的位置。
Axes
Axes与Subplot很像,但是不同的是Axes是一个单独的图层,也就是说,多个Axes在一起使用会有重叠的情况发生,而subplots函数会将其所在区域进行划分,生成一个类似二维的列表的区域,每个Axes会占据这个列表中空间上相邻的一个或多个区域,除此以外,还有axes()函数,其传入的参数包括以窗口左下角为原点的图像左下角坐标,还有图像的长与宽来对其进行相对布局,以此可以实现图层的叠加和嵌套的实现。
Ticks
Ticks是图像中的坐标轴,由于我们的图像大多以数据为处理对象,所以对应坐标的标注是必不可少的,常用的就是x与y坐标,即函数xticks()与yticks()函数,这两个函数有两个常用的参数,locs与labels分别是两个列表,分别是表示参数范围和相应位置上的标签值,而且对于labels的赋值是可选的,如果不赋值的话,默认的标签值就是所给的范围值。同时根据所给的需求不同可以修改函数中的color属性和rotation属性来修改对应的颜色与标签的倾斜度。
legend
legend是图像中的图例,用于标识图像中的线条或柱状图对应的含义,便于我们区分比较,并给图形赋予数据语义。函数中使用handles参数来表示进行标记的图像对象,用一个列表存储。使用labels来对应表示相应图形的含义。loc用于表示整个图例的位置, 其参数如下:
除此之外还有edgecolor,facecolor,title分别表示图例外框颜色、图例框内填充颜色、图例标题。ncol用于设置显示时列的数量。默认时legend是不显示的,如果需要使用的话可以调用pyplot.legend()函数。
plot
plot函数是画图时用的最多的函数,先看看这个函数的参数,主要是前两个函数比较重要分别是x与y来表示一组点集,实际画图的时候是将这些点进行连接,如果我们期望得到光滑的曲线,我们可以将点集的数量增大,在小的区间中描述多个点,来获取光滑的曲线。1
2
3
4
5
6
7
8#点集少,呈现出折线
a=np.arange(0,10,2)
plt.plot(a,a*a)
plt.show()
#点集多,呈现出光滑曲线
a=np.arange(0,10,0.1)
plt.plot(a,a*a)
plt.show()
复杂的比如正态分布函数绘制1
2
3
4
5
6u = 0 # 均值μ
s = math.sqrt(1) # 标准差δ
x = np.linspace(-5, 5, 100)
y = np.exp(-(x - u) ** 2 / (2 * s ** 2)) / (math.sqrt(2 * math.pi) * s)
plt.plot(x, y)
plt.show()
除此之外还可以设置线条的颜色,常用的颜色有1
2
3
4
5
6
7
8
9x = np.linspace(-5, 5, 100)
plt.plot(x, x, 'r')
plt.plot(x, x*2, 'g')
plt.plot(x, x*3, 'b')
plt.plot(x, x*4, 'k')
plt.plot(x, x*5, 'y')
plt.plot(x, x*6, '#733546')
plt.plot(x, x*7, '0.5')
plt.show()
线条也可以有许多的样式1
2
3
4
5
6
7x = np.linspace(-5, 5, 100)
plt.plot(x, x, 'r-')
plt.plot(x, x*2, 'g--')
plt.plot(x, x*3, 'b:')
plt.plot(x, x*4, 'k-.')
plt.plot(x, x*5, 'y ')
plt.show()
数据点集的标记样式也是多种多样的1
2
3
4
5
6
7x = np.linspace(-5, 5, 100)
plt.plot(x, x, 'r-D')
plt.plot(x, x*2, 'g--1')
plt.plot(x, x*3, 'b:2')
plt.plot(x, x*4, 'k-.3')
plt.plot(x, x*5, 'y 4')
plt.show()
还有很多的样式比如这些符号”1,2,3,4,s,p,*,h,H,+,x,D,d,|”大家可以自己尝试一下