如何删除matplotlib图底部的空白?

时间:2011-08-09 18:27:57

标签: python matplotlib

我查看了matplotlib用户指南,似乎找不到删除图表底部生成的空白区域的方法。

fig = plt.figure(1,figsize=(5,10))
axis = fig.add_subplot(211, autoscale_on=False,xlim=(1,10),ylim=(0,1))

我在图表上使用的配置。我尝试使用frameon = False,但没注意到它做了什么。我希望图表能够占据输出图像的整个大小。

这是照片: Notice that half the graph is half white space at the bottom.

我想删除所有这些空白区域。提供的答案都没有这样做......我错过了其他的东西吗?

5 个答案:

答案 0 :(得分:10)

您正在为第二个绘图创建空间而不使用它。这条线

axis = fig.add_subplot(211, autoscale_on=False,xlim=(1,10),ylim=(0,1))

在图中添加了一个子图,但211表示“两个图高一个图宽,位置1”。您可以在另一个子图调用下添加第二个图,并传递“212”(位置2)。

要创建单个子图并解决问题,请将add_subplot调用更改为:

axis = fig.add_subplot(111, autoscale_on=False,xlim=(1,10),ylim=(0,1))

111意思是逐个绘制,第一个位置。

答案 1 :(得分:4)

如果要将输出保存到文件,可以使用bbox_inches='tight'

import matplotlib.pyplot as plt
import numpy as np
fig=plt.figure(1,figsize=(5,10))
axis = fig.add_subplot(211, autoscale_on=False, xlim=(1,10), ylim=(0,1))
N=100
x = np.linspace(1,10, N)
y = np.cumsum(np.random.random(N)-0.5)
y -= y.min()
y /= y.max()
plt.plot(x,y)
plt.savefig('test.png', bbox_inches='tight', pad_inches=0.0)

答案 2 :(得分:3)

我不太清楚你是什么意思。如果要控制子图的位置和大小,请尝试使用add_axes( [left, bottom, width, height] )。以下是示例代码,我将边界设置为黑色以确保您清楚地看到它:

import matplotlib.pyplot as plt 

fig = plt.figure(figsize=(6, 2.5))
ax = fig.add_axes([0.1, 0.18, 0.86, 0.75])

ax.plot([1, 2, 3, 9, 10], [0.85, 0.6, 0.5, 0.3, 0.32], 'b--', linewidth=2, label='Single Path')
ax.plot([1, 2, 3, 9, 10], [1, 0.6, 0.5, 0.27, 0.3], 'r:', linewidth=2, label='QoS First')

ax.legend(fancybox=True, shadow=True)
ax.set_xlabel('Simulations: Flows per Second Varying')
ax.set_ylabel('ACAR')
ax.axis([1, 10, 0, 1]) 
ax.grid()
plt.savefig('rm_wspace.png', edgecolor='k', dpi=300)

rm_wsapce.png

答案 3 :(得分:0)

您应该使用subplots_adjust()函数。我发现了,

fig.subplots_adjust(底= 0.06)

对我来说似乎最有效。这为留下标记和轴标签留下了足够的空间。如果您希望图形占据整个输出,只需将底部设置为较小的数字。

旁注:subplots_adjust()还可以控制顶部,左侧和右侧的空白以及子图之间的间距。坐标是整个图的单位。也就是说,(0,0)是左下角,(1,1)是左上角。

答案 4 :(得分:0)

我通常删除图表周围的框架,删除图中的所有空格。这是使用frameon=False定义的fig = plt.figure(1,figsize=(5,10),frameon=False) axis = fig.add_subplot(211, autoscale_on=False,xlim=(1,10),ylim=(0,1)) 命令完成的。

{{1}}
相关问题