如何去除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,但没有发现有什么变化。我希望图表能够占满输出图像的整个大小。
这是图片:
我想去掉所有这些空白区域。提供的两个答案都没有解决这个问题……我是不是漏掉了什么其他的东西?
5 个回答
3
我不太确定你想表达的意思。如果你想控制子图的位置和大小,可以试试使用 add_axes( [左边, 底部, 宽度, 高度] )。下面是一个示例代码,我把边界设置成黑色,以确保你能清楚地看到它:
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)
7
如果你要把输出保存到一个文件里,可以使用 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)
12
你正在为第二个图表留出空间,但并没有使用它。那行代码
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
表示一个图高,一个图宽,位置是第一个。