在 matplotlib 图中切割 X 和 Y 标签

Sla*_*ast 3 matplotlib python-3.x pandas

我有这个代码:

import pandas as pd
from pandas import datetime
from pandas import DataFrame as df
import matplotlib
from pandas_datareader import data as web
import matplotlib.pyplot as plt
import datetime
start = datetime.date(2016,1,1)
end = datetime.date.today()
stock = 'fb'
fig = plt.figure(dpi=1400)
data = web.DataReader(stock, 'yahoo', start, end)
fig, ax = plt.subplots(dpi=720)
data['vol_pct'] = data['Volume'].pct_change()
data.plot(y='vol_pct', ax = plt.gca(), title = 'this is the title \n second line')

ax.set(xlabel="Date")
ax.legend(loc='upper center', bbox_to_anchor=(0.32, -0.22), shadow=True, ncol=2)
plt.savefig('Test')
Run Code Online (Sandbox Code Playgroud)

这是另一个代码的示例,但问题是相同的: 在此输入图像描述

在图的底部,您可以看到图例被删除。在我正在处理的不同代码的另一个图中,ylabel当我使用保存图时,甚至也被剪切了plt.savefig('Test')。我该如何解决这个问题?

Ell*_*ins 13

这是一个长期存在的问题,.savefig()它在设置边界之前不检查图例和轴位置。通常,我用以下bbox_inches论点来解决这个问题:

plt.savefig('Test', bbox_inches='tight')
Run Code Online (Sandbox Code Playgroud)

这与调用类似plt.tight_layout(),但会考虑所有相关艺术家,而tight_layout通常会将一些对象拉入框架,同时切断新对象。

我必须告诉 pyplot 在超过一半的时间里保持紧密,所以我不确定为什么这不是默认行为。