当我运行此功能时,
def plot_data(df, title="", xlabel="", ylabel="", figsize=(12, 8), save_figure=False):
from matplotlib.font_manager import FontProperties
fontP = FontProperties()
fontP.set_size('small')
plt.xlabel(xlabel)
plt.ylabel(ylabel)
plt.legend(bbox_to_anchor=(1,1), loc='upper left', prop=fontP)
plt.grid()
df.plot()
plt.show()
if save_figure:
plt.savefig(title)
结果如下:
我不明白为什么会出现两个图形对象。看起来legend
,grid
未正确应用......
另外,我想清楚地知道“当创建图形对象时”或“我怎样才能创建一个没有混淆的图形对象”之类的东西。有什么好的教程吗?
答案 0 :(得分:3)
这是因为DataFrame.plot
默认情况下不会使用当前活动数字但会创建一个新数字。但这只是默认行为 - 您可以通过显式传递活动轴(ax
参数)来覆盖它:
df.plot(ax=plt.gca()) # gca stands for "get currently axes" instance
或者您可以简单地将df.plot
命令放在顶部,因为(与df.plot
不同)大多数plt
函数会修改当前活动数字和一些plt
命令(例如{ {1}})如果没有"情节"甚至不会工作。又:
legend