43

以下代码为我提供了一个在图上方和下方具有显着边距的图。我不知道如何消除明显的边距。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消除了一些边距,但不是全部边距。

我想要的实际上是将纵横比设置为任何自定义值并同时消除空白。

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

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

4

7 回答 7

74

我刚刚发现如何从我的数字中消除所有边距。我没有使用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)

希望这可以帮助。

于 2015-07-01T02:06:36.730 回答
22

绘制图表后,您可以通过以下方式轻松操作边距:

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 帖子中,许多与边距相关的问题都可以使用这种更简单的方法。

此致。

于 2014-05-09T13:52:04.383 回答
16

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

于 2014-01-10T20:17:10.313 回答
7

我认为你需要的是,它对我很有效。

plt.axis('tight')

此命令将自动缩放轴以紧密适应数据。另请查看 Nuno Aniceto 的答案以获取自定义轴。这些文件位于https://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.axis

意识到

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

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

于 2017-08-11T09:54:49.627 回答
6

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

left = 0.05
bottom = 0.05 
width = 0.9
height = 0.9
ax = fig.add_axes([left, bottom, width, height])
于 2016-09-21T16:06:12.010 回答
5

我认为subplot_adjust调用在这里无关紧要,因为调整被tight_layout. 无论如何,这只会改变图中轴的大小。

正如 tcaswell 指出的那样,您需要更改figure 的大小。在创建时(我的提议如下)或之后,使用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()
于 2013-10-03T07:43:56.823 回答
0

您可以像这样使用:plt.subplots_adjust(wspace=1, hspace=0.5,left=0.1,top=0.9,right=0.9,bottom=0.1) 并删除 plt.savefig() 中的 item:bbox_inches='tight'。

于 2019-12-22T06:15:05.417 回答