首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Python子图固定间距

Python子图固定间距
EN

Stack Overflow用户
提问于 2013-10-28 06:20:53
回答 2查看 4.9K关注 0票数 2

我正在绘制一个4x3子图网格,我想有固定的间距在他们之间。我正在使用subplots_adjust,见下文。然而,这些数字是统一安排在整个窗口内,没有固定的空间。谢谢你的建议。

代码语言:javascript
运行
复制
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()
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-28 07:22:21

您面临的问题是,subplots_adjust的参数是相对值,即图形宽度和高度的分数,参见多古,而不是绝对值。

您正在绘制“默认画布”中的4行3列正方形(10x10) (可能是8x6)。但是,图形大小是以宽度乘以高度来定义的,因此列比行。因此,您必须交换行和列,并将子图调用更改为

代码语言:javascript
运行
复制
fig, axes = plt.subplots(3, 4)

你的空间就平等了。如果没有,请尝试添加figsize=(8,6)来设置图形大小。当然,您可以调整显示行的索引。

作为另一种选择,您可以交换figsize参数。

票数 3
EN

Stack Overflow用户

发布于 2013-10-28 17:13:33

您可以使用网格规范直接控制每个子图的间距和位置。还有更多的信息,这里。下面是一个例子:

代码语言:javascript
运行
复制
import matplotlib.gridspec as gridspec
import matplotlib.pyplot as plt
import numpy as np

data = np.random.rand(10,10)

plt.figure(figsize = (6,6)) # set the figure size to be square

gs = gridspec.GridSpec(4, 3)
# set the space between subplots and the position of the subplots in the figure
gs.update(wspace=0.1, hspace=0.4, left = 0.1, right = 0.7, bottom = 0.1, top = 0.9) 


for g in gs:
    ax = plt.subplot(g)
    plt.imshow(data)

plt.show()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19628278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档