Matplotlib子图划分——非均匀绘图(详细介绍)

1,044 阅读4分钟

一、导读

上节总结了Matplotlib的均匀绘图的语法:subplot、add_subplot、subplots、subplot_mosaic。其中前两个函数也可以进行非均匀绘图。

但是在实际的科研工作和图表中,更多的是非均匀绘图。如下图所示:

03.png

本文内容:

1)学习非均匀子区的绘制方法。

2)补充axes常用的美化属性和方法。

二、非均匀子图划分

1)subplot函数

语法:plt.subplot(nrows, ncols, index, **kwargs)

nrows:绘图的行数
ncols:绘图的列数
index:绘图的索引,从上到下,从左至右,索引从1开始。

示例:创建一个画布,有三个子区,子区1、2在第一行,子区3单独在第二行。

import matplotlib.pyplot as plt
fig = plt.figure() #设置画布大小为6英寸*6英寸
ax1 = plt.subplot(221#表示将画布分为2行2列,索引为1的子区
ax2 = plt.subplot(222) #表示将画布分为2行2列,索引为2的子区
ax3 = plt.subplot(212) #表示将画布分为2行1列,索引为2的子区
plt.show()

1.png

语法解释:

ax1 = plt.subplot(221)将fig分为四个区域,2行*2列,4个子图。1表示选中的索引为1的子区,也就是选中了左上角的子图。

ax2 = plt.subplot(222)同上一句,2表示选中索引为2的子区,也就是选中右上角的子图。 前两句语法可以看出,现在画布的上半部分全部已经被占满,还剩下下半部分。

ax3 = plt.subplot(212)表示将fig分为2个区域,2行1列,也就是上半部分和下半部分。2表示选中索引为2的子图,也就是下半部分。

因为第1句和第2句已经将上半部分占满,第3句将下半部分占满,组合起来就把整个画布占满了。

2)add_subplot函数

语法:fig.add_subplot(nrows, ncols, index, **kwargs)
参数解释和subplot类似。
示例:创建一个画布,有三个子区,子区1,2在第一行,子区3单独在第二行。

fig = plt.figure(figsize = (5, 5))
ax1 = fig.add_subplot(221) #表示将画布分为2行2列,索引为1的子区
ax2 = fig.add_subplot(222) #表示将画布分为2行2列,索引为2的子区
ax3 = fig.add_subplot(212) #表示将画布分为2行1列,索引为2的子区
plt.show()

2.png

绘图的原理与subplot一致。

3)subplot_mosaic函数

语法:fig, axs = plt.subplot_mosaic(子图别称,layout, figsize) #笔者常用这两个参数。

参数解释参见上一节内容。示例:创建一个画布,有三个子区,子区1,2在第一行,子区3单独在第二行。

fig, ax = plt.subplot_mosaic('''AB                                
                                CC''')
ax['A'].set_title('Part A') #设置A子区标题
ax['B'].set_title('Part B')
ax['C'].set_title('Part C')
plt.show()

3.png

以上就是笔者用于不均匀子图划分的常用函数,上述子区都是axes对象,因此可以使用axes的方法属性对绘图区进行调整。

三、axes对象常用的属性

axes.set_xlim():设置x轴范围,axes.set_xlim(-5, 5)表示设置x轴范围为-5——5

axes.set_xlabel():设置x轴标签,axes.set_xlabel('x轴', font1)表示设置x轴标签,并使用font1号新建字体样式

axes.set_xticks():设置x轴刻度,axes.set_xticks(range(-5, 6, 1)表示设置x轴刻度为[-5, -4, ..., 4, 5]

[label.set_fontsize(size) for label in axes.get_xticklabels]:改变x轴刻度字体大小

axes.legend(fontsize = 15):显示图例,并设置字体大小为15。

axes.set_title():设置标题。

总结

本文总结了Matplotlib中非均匀绘图的方式,主要通过 subplot、add_subplot、subplot_mosaic函数。每一个子区都是axes对象,我们可以调用axes绘图语句对某一个子区绘图。

介绍了axes对象中常用的几个属性:设置轴范围、设置轴标签、设置轴刻度、改变刻度字体大小、图例和标题。这几个参数是axes的美化参数,可以让我们的绘图更漂亮。

由于篇幅限制,本篇到此结束,下一节将正式介绍Matplotlib绘图语法。此内容将在"python数据分析实践"公众号同步更新。如果您有更好的想法或对文章有其他建议,可以关注或评论留言。如果有想要了解其它的内容,也可以联系或评论,感谢您的阅读!