我查看了matplotlib用户指南,似乎找不到删除图表底部生成的空白区域的方法。
fig = plt.figure(1,figsize=(5,10))
axis = fig.add_subplot(211, autoscale_on=False,xlim=(1,10),ylim=(0,1))
我在图表上使用的配置。我尝试使用frameon = False,但没注意到它做了什么。我希望图表能够占据输出图像的整个大小。
这是照片:
我想删除所有这些空白区域。提供的答案都没有这样做......我错过了其他的东西吗?
答案 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)
答案 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}}