我正在尝试找到一种方法,用matplotlib
生成并保存的图形中删除垂直空白区域。所以,基本上是轴上方和下方的白色空间。
我的用例中的requiremens如下:
以下命令非常接近并删除了垂直空白区域,但它也删除了水平空白区域:
myFigure.savefig(myImagePath, bbox_inches='tight')
最佳解决方案是将bbox_inches='tight'
的算法仅应用于绘图的y轴...
答案 0 :(得分:1)
如评论中所述,您通常会设置数字大小和子情节,以便在选择方向上没有空格。如果y轴确实具有需要保留的给定尺寸,则可以先计算其长度,然后调整图形尺寸和子图参数,使轴长保持不变。
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(5,6), dpi=50)
ax.plot([1,2])
ax.set_ylabel("ylabel")
ax.set_xlabel("xlabel")
### 1. Original image
ax.set_title("original")
plt.savefig("fsi01.png", facecolor="#edf9f9")
### 2. tight bbox
ax.set_title('bbox_inches="tight"')
plt.savefig("fsi02.png", facecolor="#edf9f9", bbox_inches="tight")
### 3. Only vertical adjustent
axes_height = fig.get_size_inches()[1]*(fig.subplotpars.top-fig.subplotpars.bottom)
top = 0.94; bottom=0.09
fig.subplots_adjust(top=top,bottom=bottom)
fig.set_size_inches((fig.get_size_inches()[0],axes_height/(top-bottom)))
ax.set_title('only vertical adjust')
plt.savefig("fsi03.png", facecolor="#edf9f9")
plt.show()
当然,值top = 0.94; bottom=0.09
需要在每种情况下单独确定。
答案 1 :(得分:0)
你想使用自动缩放(假设你使用pyplot作为plt)
plt.autoscale(enable=True, axis='y', tight=True)