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

2024-05-16 14:04:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我浏览了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.

我想把这些空白都去掉。提供的两个答案都没有做到这一点。。。我还缺什么吗?


Tags: 方法用户addfalse图形matplotlib指南fig
3条回答

你正在为第二个绘图创建空间而不是使用它。线路

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表示逐个绘图,第一个位置。

我不太明白你的意思。如果要控制子块的位置和大小,请尝试使用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

如果要将输出保存到文件中,可以使用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)

相关问题 更多 >