Matplotlib调整图形边距

mctunoxg  于 2022-12-13  发布在  其他
关注(0)|答案(7)|浏览(244)

下面的代码给了我一个图,图的上方和下方都有明显的边距。我不知道如何消除明显的边距。subplots_adjust没有按预期工作。

import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(range(10),range(10))
ax.set_aspect('equal')
plt.tight_layout()

tight_layout消除了部分边距,但不是全部边距。
我想要的实际上是将宽高比设置为任何自定义值,同时消除白色。

Update:正如Pierre H.所说,关键是改变图形容器的大小。所以我的问题是:你能建议一种方法来适应图形的大小与轴的大小与任意纵横比?

换句话说,我首先创建一个图形和一个坐标轴,然后更改坐标轴的大小(例如,通过更改纵横比),这通常会使图形容器的一部分为空。在此阶段,我们需要相应地更改图形的大小,以消除图形容器上的空白空间。

ebdffaop

ebdffaop1#

我刚刚发现了如何从我的数字中消除所有边距。我没有使用tight_layout(),而是使用:

import matplotlib.pyplot as plt
fig = plt.figure(figsize=(20,20))
ax = plt.subplot(111,aspect = 'equal')
plt.subplots_adjust(left=0, bottom=0, right=1, top=1, wspace=0, hspace=0)

希望这对你有帮助。

1dkrff03

1dkrff032#

绘制图表后,您可以通过以下方式轻松地处理边距:

plot_margin = 0.25

x0, x1, y0, y1 = plt.axis()
plt.axis((x0 - plot_margin,
          x1 + plot_margin,
          y0 - plot_margin,
          y1 + plot_margin))

这个例子可以根据你的需要改变长宽比或者改变边距。在其他的stacktoverflow帖子中,很多关于边距的问题都可以使用这个简单的方法。
顺祝商祺。

ruoxqz4g

ruoxqz4g3#

tight_layout(pad=0)将满足您的需求。http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.tight_layout

jtoj6r0c

jtoj6r0c4#

我觉得你需要的是,而且对我来说效果很好。

plt.axis('tight')

此命令将自动缩放坐标轴,使其与数据紧密匹配。另外,请检查Nuno Aniceto的答案,以获得自定义坐标轴。文档位于https://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.axis。
请注意

plt.savefig(filename, bbox_inches='tight')

将有助于删除所有图形白色,包括标签等,但不包括轴内的空白。

kcrjzv8t

kcrjzv8t5#

如果你想精确控制图形布局,你应该使用add_axes

left = 0.05
bottom = 0.05 
width = 0.9
height = 0.9
ax = fig.add_axes([left, bottom, width, height])
v9tzhpje

v9tzhpje6#

我认为subplot_adjust调用在这里是无关紧要的,因为调整被tight_layout覆盖了。无论如何,这只改变了图中 * axes* 的大小。
正如tcaswell指出的,你需要改变 * 图形的大小 *。要么在创建时(我的建议如下),要么在创建后使用fig.set_size_inches。我在这里使用figsize=(6,6)参数创建一个长宽比为1:1的图形(当然6英寸是一个任意的选择):

import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure(figsize=(6,6))
ax = fig.add_subplot(111)
ax.plot(range(10),range(10))
ax.set_aspect('equal')
plt.tight_layout()
o7jaxewo

o7jaxewo7#

您可以使用类似于:

plt.subplots_adjust(wspace=1,hspace=0.5,left=0.1,top=0.9,right=0.9,bottom=0.1)

并删除plt.savefig()中的项目bbox_inches='tight'

相关问题