为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

墨色风雨 2021-09-28 20:51:22
我尝试使用matplotlib.pyplot如下方式拟合四张图像:| plot1 | plot2||    plot3     ||    plot4     |我发现的大多数例子都涵盖了三个这样的图:ax1 = plt.subplot(221)ax2 = plt.subplot(222)ax3 = plt.subplot(212)这成功地绘制了三个图(但是,我不明白它是如何完成的ax3)。现在,我想将情节 4 添加到此安排中。无论我尝试什么,我都无法成功。你能指导我如何实现它吗?
查看完整描述

2 回答

?
MYYA

TA贡献1868条经验 获得超4个赞

您可以使用subplot2grid。这真的很方便。


文档说


在网格中创建子图。网格由形状指定,在 loc 的位置,跨越每个方向的 rowspan 和 colspan 单元格。loc 的索引是从 0 开始的。


首先,您在(3,2)此处根据行数和列数定义大小。然后定义特定子图的起始(行、列)位置。然后分配该特定子图跨越的行/列数。行跨度和列跨度的关键字分别是rowspan和colspan。


import matplotlib.pyplot as plt


ax1 = 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()

//img1.sycdn.imooc.com//61530fe60001010204310283.jpg

查看完整回答
反对 回复 2021-09-28
?
ibeautiful

TA贡献1993条经验 获得超5个赞

您提供给 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 才能使用此表单。

//img1.sycdn.imooc.com//61530ff60001460306360538.jpg

//img1.sycdn.imooc.com//61530ffe0001c56306380536.jpg

查看完整回答
反对 回复 2021-09-28
  • 2 回答
  • 0 关注
  • 226 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信