为什么会出现两个图形对象而不是一个?

时间:2017-07-11 10:59:05

标签: python pandas matplotlib

当我运行此功能时,

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)

结果如下:

enter image description here

我不明白为什么会出现两个图形对象。看起来legendgrid未正确应用......

另外,我想清楚地知道“当创建图形对象时”或“我怎样才能创建一个没有混淆的图形对象”之类的东西。有什么好的教程吗?

1 个答案:

答案 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