此问题在此处已有答案:
Matplotlib different size subplots(6个答案)
1年前关闭。
我有一个脚本,它创建一个或两个图表,这取决于是否满足一个特定的条件。实际上,基本上,我目前所做的如下:
import matplotlib.pyplot as plt
list1 = [1,2,3,4]
list2 = [4,3,2,1]
somecondition = True
plt.figure(1) #create one of the figures that must appear with the chart
ax = plt.subplot(211) #create the first subplot that will ALWAYS be there
ax.plot(list1) #populate the "main" subplot
if somecondition == True:
ax = plt.subplot(212) #create the second subplot, that MIGHT be there
ax.plot(list2) #populate the second subplot
plt.show()
这段代码(包含正确的数据,但我所做的这个简单版本无论如何都是可执行的)生成了两个大小相同的子图,一个在另一个的上面。然而,我想得到的是以下内容:
- 如果某个条件为True,那么两个子图都应该出现在图中。因此,我希望第二子图比第一子图小1/2;
- 如果某个条件是False,那么只有第一个子图应该出现,我希望它的大小与所有图形一样(在第二个子图不出现的情况下,不要留下空白)。
我很确定这只是两个子图大小的问题,甚至可能是参数211和212(我不明白它们代表什么,因为我是Python的新手,在网络上还找不到明确的解释)。有人知道如何以简单的方式调节子情节的大小吗?与子图的数量以及整个图形的大小成比例?为了使它更容易理解,你也可以编辑我的简单代码,我附上得到我想要的结果吗?提前感谢!
2条答案
按热度按时间s8vozzvw1#
这个解决方案是否令人满意?
如果您需要宽度相同但高度减半,最好使用
matplotlib.gridspec
,此处参考vybvopom2#
似乎你正在寻找这个:
幻数是nrows,ncols,plot_number,请参阅文档。因此
3,1,3
将创建3行1列,并绘制到第三个单元格。其缩写为313
。可以使用元组plot_number,这样你就可以创建一个位于第一个和第二个单元格中的图:
3,1,(1,2)
.