此问题已在此处有答案:
Multiple figures in a single window(7个回答)
六年前就关门了。
我试图在一个图上显示20个随机图像。图像确实显示,但它们是重叠的。我使用:
import numpy as np
import matplotlib.pyplot as plt
w=10
h=10
fig=plt.figure()
for i in range(1,20):
img = np.random.randint(10, size=(h,w))
fig.add_subplot(i,2,1)
plt.imshow(img)
plt.show()
我希望它们自然地出现在网格布局中(比如4x5),每个都有相同的大小。部分问题是我不知道add_subplot的参数是什么意思。文档中指出参数是行数,列数和图号。没有定位参数。此外,图号只能是1或2。我如何实现这一点?
2条答案
按热度按时间v64noz0r1#
以下是我的方法,你可以尝试:
结果图像:
(原始回答日期:10月7日17时20分)
编辑1
由于这个答案是受欢迎的超出我的预期.我看到,一个小的变化是需要使灵活性的操纵个别情节.所以,我提供这个新版本的原始代码.在本质上,它提供:-
1.访问子图的各个轴
1.可以在选定轴/子图上绘制更多特征
新代码:
结果图:
编辑2
在前面的例子中,代码提供了对单个索引的子图的访问,这在图有许多行/列的子图时是不方便的。这里是一个替代方案。下面的代码提供了对
[row_index][column_index]
的子图的访问,这更适合于操纵许多子图的数组。结果图:
子图数组的记号和记号标签
如果所有子图共享相同的值范围,则可以隐藏伴随子图的一些刻度和刻度标签,以获得更清晰的图。除了左侧和底部的外部边缘外,所有刻度和刻度标签都可以隐藏,如此图。
要实现仅在左边缘和下边缘上具有共享标记的绘图,您可以执行以下操作:
在
fig, ax = plt.subplots()
中添加选项sharex=True, sharey=True
这行代码将变成:
要指定所需的刻度数和要打印的标签,
在
for i, axi in enumerate(ax.flat):
的主体中,添加以下代码数字5和4是要绘制的tick/tick_labels的数量。您可能需要适合您的图的其他值。
rfbsl7qr2#
您可以尝试以下操作:
然而,这基本上只是从这里复制和粘贴:Multiple figures in a single window,因此这篇文章应该被认为是重复的。
我希望这能帮上忙。