此问题已在此处有答案:
Improve subplot size/spacing with many subplots(9个回答)
4个月前关闭。
这篇文章是昨天编辑并提交审查的。
我正在绘制一个4x3的子图网格,我希望它们之间有固定的间距。我使用subplots_adjust,见下文。然而,这些图在整个窗口内均匀排列,没有固定的间距。谢谢你的建议。
import matplotlib.pyplot as plt
import numpy as np
data = np.random.rand(10,10)
fig, axes = plt.subplots(4, 3)
axes[0, 0].imshow(data)
axes[1, 0].imshow(data)
axes[2, 0].imshow(data)
axes[3, 0].imshow(data)
axes[0, 1].imshow(data)
axes[1, 1].imshow(data)
axes[2, 1].imshow(data)
axes[3, 1].imshow(data)
axes[0, 2].imshow(data)
axes[1, 2].imshow(data)
axes[2, 2].imshow(data)
axes[3, 2].imshow(data)
plt.setp(axes, xticks=[], yticks=[])
plt.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=.05, hspace=.05)
plt.show()
(Improve subplot size/spacing with many subplots解决重叠标签,这个问题特别涉及子图之间的恒定间距)
2条答案
按热度按时间mitkmikd1#
你面临的问题是,
subplots_adjust
的参数是相对值,即图的宽度和高度的分数,参见docu,而不是绝对值。您正在“默认画布”(可能是8x6)中绘制4行3列的正方形(10x10)。然而,图形大小是以宽乘以高,因此列乘以行来定义的。因此您必须交换行和列,并将 subplots 调用更改为
然后你的空格将相等。如果不是,尝试添加
figsize=(8,6)
来设置图形大小。当然,你可以调整 imshow 行的索引。作为替代,您可以交换 figsize 参数。
rpppsulh2#
您可以直接使用gridspec控制每个子图的间距和位置。有更多信息here。下面是一个示例: