使图例对应于Pandas / PyPlot中的y值

时间:2015-02-23 19:41:41

标签: python matplotlib pandas legend legend-properties

我有一个名为" original_filtered_df"的数据框。我试图为两列中的每一对可能的值绘制(" COLOR"," SIZE"),另外两列(" WEIGHT",&# 34;高度")随着时间的推移(" DATE")。

以下代码正确绘制。它创建了多个图,每个图都有一个可能的值(" COLOR"," SIZE")。每个图包含两行,一行用于" WEIGHT"一个用于" HEIGHT"。但是,传说中的名字并没有说" WEIGHT"或" HEIGHT"。他们都说" DATE" (x轴)。如何强制图例引用y轴数据,以便名称将显示" WEIGHT"和" HEIGHT"?

import matplotlib.pyplot as plt

for combo in original_filtered_df.groupby(['COLOR', 'SIZE'], as_index=True):
    color = combo[0][0]
    size = combo[0][1]
    filtered_df = original_filtered_df[(original_filtered_df["COLOR"] == color) & (original_filtered_df["SIZE"] == size)]
    plt.figure()
    filtered_df.plot(x="DATE", y="WEIGHT", color=(1,0,0))
    filtered_df.plot(x="DATE", y="HEIGHT", color=(0,1,0))

    #patches, labels = ax.get_legend_handles_labels()
    #ax.legend(patches, labels, loc='center left', bbox_to_anchor=(1, 0.5))

    plt.legend(loc='center left', bbox_to_anchor=(1, 0.5))
    plt.title("COLOR " + str(color) + ", SIZE " + size)

1 个答案:

答案 0 :(得分:1)

我不确定为什么图例的标签默认为x轴,但我在绘图时通过执行以下操作解决了这个问题:

filtered_df.plot(x="DATE", y="WEIGHT", color=(1,0,0), label="WEIGHT")
filtered_df.plot(x="DATE", y="HEIGHT", color=(0,1,0), label="HEIGHT")

这样,图例功能使用了正确的y轴标签。