Matplotlib绘图中X和Y标签被切割

3
我有这段代码:

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')

这是另一个代码的示例,但问题相同: enter image description here 在图的底部,可以看到图例被裁剪了。在我正在处理的另一个代码的另一个图中,当我使用plt.savefig('Test')保存图时,甚至ylabel也会被裁剪。我该如何解决这个问题?
2个回答

10

.savefig()存在一个长期存在的问题,即在设置边界之前不会检查图例和轴位置。通常情况下,我会使用bbox_inches参数来解决这个问题:

plt.savefig('Test', bbox_inches='tight')

这类似于调用plt.tight_layout(),但考虑所有相关的艺术元素,而tight_layout通常会将某些对象拉入画布以裁剪新对象。

大多数情况下,我需要告诉pyplot保持紧凑,所以我不确定为什么这不是默认行为。


这不是默认设置,因为人们经常不希望他们的图形改变大小。 - undefined
@JodyKlymak,bbox_inches会改变图形对象本身的大小吗? - undefined
1
是的,暂时在保存图形时。 - undefined

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接