1.创建画布与子图
目录
Matplotlib所绘制的图形位于图片(Figure)对象中,绘图常见的方法及说明如表格:
Matplotlib绘图常用方法及说明 函数 函数作用 plt.figure 创建一个空白画布,可以指定画布大小 figure.add_subplot 创建并选中子图,可以指定子图行数、列数与选中图片编号 表中plt.figure的主要左右是构建一张空白的画布,并可以选择是否将整个画布分为多个区域,方便在同一幅图片上绘制多个图形。最简单的绘图可以省略plt.figure部分,而直接在默认的画布上进行图形绘制
例1.创建子图import matplotlib.pyplot as plt fig = plt.figure() #不能使用空白的figure绘图,需要创建子图 ax1 = fig.add_subplot(2,2,1) ax2 = fig.add_subplot(2,2,2) ax3 = fig.add_subplot(2,2,3)
例2.绘制子图
import matplotlib.pyplot as plt fig = plt.figure() ax1 = fig.add_subplot(2,2,1) ax2 = fig.add_subplot(2,2,2) ax3 = fig.add_subplot(2,2,3) ax1.plot([1.5,2,3.5,-1,1.6])
可以使用语句”fig,axes = plt.subplots(2,3)“创建一个新的图片,然后返回包含了已经成生的子图对象的NumPy数组。数组axes可以像二维数组那样方便地进行索引,如axes[0,1],也可以通过sharex和sharey表明子图分别有相同的X轴和Y轴
例3.创建子图序列import matplotlib.pyplot as plt fig,axes = plt.subplots(2,3)
例4.调整子图周围的间距
import matplotlib.pyplot as plt import numpy as np fig,axes = plt.subplots(2,2,sharex = True,sharey = True) for i in range(2): for j in range(2): axes[i,j].hist(np.random.randn(500),bins=50,color='k',alpha=0.5)#直方图 plt.subplots_adjust(wspace = 0,hspace=0)
2.添加画布内容
在画布上绘制图形,需要设置绘图的一些属性,如标题、轴标签等。其中的添加标签、添加坐标轴名称。绘制图形等步骤是并列的,没有先后顺序,但是添加图例必须要在绘制图形之后。Pyplot中添加各类标签和图例的函数看下表:
画布中属性设置常用的函数及其说明 函数 说明 plt.title 在当前图形中添加标题,可以指定标题的名称、位置、颜色、字体大小等参数 plt.xlabel 在当前图形中添加X轴名称,可以指定位置、颜色、字体等参数 plt.ylabel 在当前图形中添加Y轴名称,可以指定位置、颜色、字体等参数 plt.xlim 指定当前图形X轴的范围,只能确定一个数值区间 plt.ylim 指定当前图形Y轴的范围,只能确定一个数值区间 plt.xticks 指定X轴刻度的数目与取值 plt.yticks 指定Y轴刻度的数目与取值 plt.legend 指定当前图形的图例,可以指定图例的大小、位置、标签 例5.绘图时设置坐标轴属性
import matplotlib.pyplot as plt import numpy as np data = np.arange(0,1,0.01) plt.title('my lines example') plt.xlabel('x') plt.ylabel('y') plt.xlim(0,1) plt.ylim(0,1) plt.xticks([0,0.2,0.4,0.6,0.8,1]) plt.yticks([0,0.2,0.4,0.6,0.8,1]) plt.tick_params(labelsize=12)#刻度线标签的的大小 plt.plot(data,data**2) plt.plot(data,data**3) plt.legend(['y = x^2','y = x^3']) plt.show()
例6.包含子图绘制的基础语法
import matplotlib.pyplot as plt import numpy as np data = np.arange(0,np.pi*2,0.01) fig1 = plt.figure(figsize = (9,7),dpi = 90)#确定画布大小 ax1 = fig1.add_subplot(1,2,1)#绘制第一幅子图 plt.title('my lines example') plt.xlabel('x') plt.ylabel('y') plt.xlim(0,1) plt.ylim(0,1) plt.xticks([0,0.2,0.4,0.6,0.8,1]) plt.yticks([0,0.2,0.4,0.6,0.8,1]) plt.tick_params(labelsize=12)#刻度线标签的的大小 plt.plot(data,data**2) plt.plot(data,data**3) plt.legend(['y = x^2','y = x^3']) ax1 = fig1.add_subplot(1,2,2)#绘制第二幅子图 plt.title('sin-cos') plt.xlabel('x') plt.ylabel('y') plt.ylim(-1,1) plt.xlim(0,np.pi*2) plt.xticks([0,np.pi/2,np.pi,np.pi*3/2,np.pi*2]) plt.yticks([-1,-0.5,0,0.5,1]) plt.plot(data,np.sin(data)) plt.plot(data,np.cos(data)) plt.legend(['sin','cos']) plt.show()
图例是图中各种符号和颜色所代表内容与指标的说明。matplotlib中通过Legend函数绘制图例。关于plt.legend()的说明如下。
参数loc用于设置图例的位置,取值有:
0:'best' 4: 'lower right' 8: 'lower center' 1: 'upper right' 5: 'right' 9: 'upper center' 2: 'upper right' 6: 'center left' 10: 'center' 3: 'lower left 7: 'center right' frontsize用于设置字体大小,常取值为int型指数。
常设置示例:
plt.legend(loc = 'best',frameon = False) #去掉图例边框,推荐使用 plt.legend(loc = 'best',edgecolor = 'blue') #设置边框颜色 plt.legend(loc = 'best',facecolor = 'blue') #设置图例背景颜色,若无边框,参数无效
3.绘制的保存与显示
绘图完成后,需要显示或保存。图形显示和保存的函数看表:
绘图显示和保存的函数 函数 作用 plt.savefig
保存绘制的图片,可以指定图片的分辨率、边缘颜色等参数 plt.show 在本机显示图形 plt.savefig的参数选项:
figure.savefig选项及其说明 选项 说明 fname 包含文件路径或Python文件型对象的字符串。图片格式是从文件扩展名中推断出来的(例如PDF格式的.pdf) dpi 设置每英寸点数的分辨率,默认为100 facecolor,edgecolor 子图外的图形背景颜色,默认是'w'(白色) format 文件格式('png','pdf','svg','ps'等) bbox_inches 要保存的图片范围,设置为‘tight’则去除图片周围的空白