我正在努力处理matplotlib中的图边距。我使用下面的代码来生成我的图表:
plt.imshow(g)
c = plt.colorbar()
c.set_label("Number of Slabs")
plt.savefig("OutputToUse.png")
然而,我得到的输出数字在图的两边都有大量的空白。我已经搜索了谷歌并阅读了matplotlib文档,但我似乎找不到如何减少这一点。
我正在努力处理matplotlib中的图边距。我使用下面的代码来生成我的图表:
plt.imshow(g)
c = plt.colorbar()
c.set_label("Number of Slabs")
plt.savefig("OutputToUse.png")
然而,我得到的输出数字在图的两边都有大量的空白。我已经搜索了谷歌并阅读了matplotlib文档,但我似乎找不到如何减少这一点。
当前回答
受到sammy回答的启发:
margins = { # vvv margin in inches
"left" : 1.5 / figsize[0],
"bottom" : 0.8 / figsize[1],
"right" : 1 - 0.3 / figsize[0],
"top" : 1 - 1 / figsize[1]
}
fig.subplots_adjust(**margins)
其中figsize是在fig = pyplot.figure(figsize=…)中使用的元组。
其他回答
最近的matplotlib版本,你可能想尝试约束布局:
Constrained_layout自动调整子图和装饰 图例和颜色条,以便它们适合在图形窗口 仍然尽可能地保留所请求的逻辑布局 用户。 Constrained_layout类似于tight_layout,但是使用了一个约束 求解器来确定轴的大小,使它们适合。 Constrained_layout需要在添加任何轴之前被激活 一个图。
可惜熊猫处理不好…
受到sammy回答的启发:
margins = { # vvv margin in inches
"left" : 1.5 / figsize[0],
"bottom" : 0.8 / figsize[1],
"right" : 1 - 0.3 / figsize[0],
"top" : 1 - 1 / figsize[1]
}
fig.subplots_adjust(**margins)
其中figsize是在fig = pyplot.figure(figsize=…)中使用的元组。
有时候,plt.tight_layout()不会给我最好的视图或我想要的视图。那为什么不先画任意边距然后再确定边距呢? 因为我们从那里得到了很好的所见即所得。
import matplotlib.pyplot as plt
fig,ax = plt.subplots(figsize=(8,8))
plt.plot([2,5,7,8,5,3,5,7,])
plt.show()
然后将设置粘贴到margin函数,使其永久:
fig,ax = plt.subplots(figsize=(8,8))
plt.plot([2,5,7,8,5,3,5,7,])
fig.subplots_adjust(
top=0.981,
bottom=0.049,
left=0.042,
right=0.981,
hspace=0.2,
wspace=0.2
)
plt.show()
# import pyplot
import matplotlib.pyplot as plt
# your code to plot the figure
# set tight margins
plt.margins(0.015, tight=True)
如果有人想知道如何在应用plt.tight_layout()或fig.tight_layout()后消除其余的白色边距:使用参数pad(默认为1.08),你可以使它更紧凑: “图形边缘和子图边缘之间的填充,作为字体大小的一部分。” 例如,
plt.tight_layout(pad=0.05)
会把利润降低到很小的程度。放0对我没用,因为它使子图的方框也被切断了一点。