加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 将子图添加到现有图中?

发布时间:2020-12-20 13:38:40 所属栏目:Python 来源:网络整理
导读:我正试图掌握matplotlib.当网格形状已经存在时,我很难理解如何添加子图. 因此,例如,如果我创建一个带有2 * 2网格子图的图形,我该如何添加第5或第6个.即如何更改几何图形以适应另一个子图.如果我这样做: x = np.linspace(0,2 * np.pi,400)y = np.sin(x ** 2)
我正试图掌握matplotlib.当网格形状已经存在时,我很难理解如何添加子图.

因此,例如,如果我创建一个带有2 * 2网格子图的图形,我该如何添加第5或第6个.即如何更改几何图形以适应另一个子图.如果我这样做:

x = np.linspace(0,2 * np.pi,400)
y = np.sin(x ** 2)
f,((ax1,ax2),(ax3,ax4)) = plt.subplots(2,2,sharex=True,sharey=True,facecolor='red',
dpi = 100,edgecolor = 'red',linewidth = 5.0,frameon = True)
ax1.plot(x,y)
ax1.set_title('Sharing x per column,y per row')
ax2.scatter(x,y)
ax3.scatter(x,2 * y ** 2 - 1,color='r')
ax4.plot(x,color='r')

然后我想在下面添加另一个子图:

f.add_subplot(3,5)

然后新的子图与第四个重叠,当我希望它明显位于下方时.我需要更改几何图形吗?如果是这样,怎么样?或者它只是一个位置的东西?

更普遍的是,带有子情节的** kwargs会发生什么?如果有人可以帮我解决如何开始使用它们,那也会非常方便.

解决方法

我认为你应该改变绘图布局几何的直觉是正确的.您首先指定(2,2)几何形状,即2行和2列,因此通过常规方法自然添加第5个图可能会导致一些问题.有多种方法可以解决这个问题,但其中一个更简单的解决方案就是通过使用第三行图来给自己一个更大的子图网格 – 使用(3,2)几何,如下例所示:

%pylab inline
import numpy as np
x = np.linspace(0,400)
y = np.sin(x ** 2)
#probably easiest to add a third row of plots (3,2) at this stage:
f,ax4),(ax5,ax6)) = plt.subplots(3,color='r')
#now the fifth plot shouldn't clobber one of the others:
ax5.plot(x,y**3,color='g')

如果你想让第五个图占据整个底行,而不是在那里有一个空白的第6个图,你可以使用更高级的选项,如gridspec documentation中描述的matplotlib.gridspec.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读