我正在努力处理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文档,但我似乎找不到如何减少这一点。
当前回答
只需使用ax = fig.add_axes([左,下,宽,高]) 如果你想要精确控制图形布局。如。
left = 0.05
bottom = 0.05
width = 0.9
height = 0.9
ax = fig.add_axes([left, bottom, width, height])
其他回答
matplotlibs subplots_adjust的问题是,您输入的值相对于图形的x和y图形大小。这个例子是正确的数字大小打印pdf:
为此,我重新计算了绝对值的相对间距,如下所示:
pyplot.subplots_adjust(left = (5/25.4)/figure.xsize, bottom = (4/25.4)/figure.ysize, right = 1 - (1/25.4)/figure.xsize, top = 1 - (3/25.4)/figure.ysize)
对于一个“figure”的数字。“x维英寸”和“数字”。y尺寸为英寸。因此,整个图形在标签放置范围内左侧空白5mm,底部空白4mm,右侧空白1mm,顶部空白3mm。(x/25.4)的转换已经完成,因为我需要将mm转换为英寸。
注意,x的纯图表大小将是“figure”。Xsize -左边距-右边距”而纯图y的大小将为“图”。Ysize -下距-上距",单位为英寸
其他sniplets(不确定这些,我只是想提供其他参数)
pyplot.figure(figsize = figureSize, dpi = None)
and
pyplot.savefig("outputname.eps", dpi = 100)
你所需要的就是
plt.tight_layout()
在输出之前。
除了减少页边距外,这还将所有子图之间的空间紧密分组:
x = [1,2,3]
y = [1,4,9]
import matplotlib.pyplot as plt
fig = plt.figure()
subplot1 = fig.add_subplot(121)
subplot1.plot(x,y)
subplot2 = fig.add_subplot(122)
subplot2.plot(y,x)
fig.tight_layout()
plt.show()
有时候,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()
plt.savefig("circle.png", bbox_inches='tight',pad_inches=-1)
# import pyplot
import matplotlib.pyplot as plt
# your code to plot the figure
# set tight margins
plt.margins(0.015, tight=True)