如何绘制具有不同 colspan 的四个子图?

我尝试使用matplotlib.pyplot如下方式拟合四张图像:


| plot1 | plot2|

|    plot3     |

|    plot4     |

我发现的大多数例子都涵盖了三个这样的图:


ax1 = plt.subplot(221)

ax2 = plt.subplot(222)

ax3 = plt.subplot(212)

这成功地绘制了三个图(但是,我不明白它是如何完成的ax3)。现在,我想将情节 4 添加到此安排中。无论我尝试什么,我都无法成功。


你能指导我如何实现它吗?


墨色风雨
浏览 227回答 2
2回答

MYYA

您可以使用subplot2grid。这真的很方便。文档说在网格中创建子图。网格由形状指定,在 loc 的位置,跨越每个方向的 rowspan 和 colspan 单元格。loc 的索引是从 0 开始的。首先,您在(3,2)此处根据行数和列数定义大小。然后定义特定子图的起始(行、列)位置。然后分配该特定子图跨越的行/列数。行跨度和列跨度的关键字分别是rowspan和colspan。import matplotlib.pyplot as pltax1 = plt.subplot2grid((3, 2), (0, 0), colspan=1)ax2 = plt.subplot2grid((3, 2), (0, 1), colspan=1)ax3 = plt.subplot2grid((3, 2), (1, 0), colspan=2)ax4 = plt.subplot2grid((3, 2), (2, 0), colspan=2)plt.tight_layout()

ibeautiful

您提供给 subplot 的整数实际上是 3 部分:第一位:行数第二位:列数第三位:索引因此,对于每次调用子图,我们指定应如何划分绘图区域(使用行和列),然后将绘图放入哪个区域(使用索引),请参见下图。ax1 = plt.subplot(321)  # 3 rows, 2 cols, index 1: col 1 on row 1ax2 = plt.subplot(322)  # 3 rows, 2 cols, index 2: col 2 on row 1ax3 = plt.subplot(312)  # 3 rows, 1 cols, index 2: col 1 on row 2ax4 = plt.subplot(313)  # 3 rows, 1 cols, index 3: col 1 on row 3从文档:描述子图位置的 3 位整数或三个单独的整数。如果三个整数依次为 nrows、ncols 和 index,则子图将在具有 nrows 行和 ncols 列的网格上占据索引位置。索引从左上角的 1 开始,向右增加。pos 是一个三位整数,其中第一位是行数,第二位是列数,第三位是子图的索引。即 fig.add_subplot(235) 与 fig.add_subplot(2, 3, 5) 相同。请注意,所有整数必须小于 10 才能使用此表单。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python