在Pandas Plot中添加传说

时间:2017-05-28 09:34:37

标签: python pandas plot

我正在使用Pandas Plot绘制密度图。但我无法为每个图表添加适当的图例。我的代码和结果如下: -

for i in tickers:
    df = pd.DataFrame(dic_2[i])
    mean=np.average(dic_2[i])
    std=np.std(dic_2[i])
    maximum=np.max(dic_2[i])
    minimum=np.min(dic_2[i])
    df1=pd.DataFrame(np.random.normal(loc=mean,scale=std,size=len(dic_2[i])))
    ax=df.plot(kind='density', title='Returns Density Plot for '+ str(i),colormap='Reds_r')
    df1.plot(ax=ax,kind='density',colormap='Blues_r')

enter image description here

你可以在图片的右上方框中看到,传说是0。如何在那里添加有意义的东西?

print(df.head())
           0
0  -0.019043
1 -0.0212065
2  0.0060413
3  0.0229895
4 -0.0189266

2 个答案:

答案 0 :(得分:3)

我认为你可能想要重新构建你创建图表的方式。一种简单的方法是在绘图之前创建ax

# sample data
df = pd.DataFrame()
df['returns_a'] = [x for x in np.random.randn(100)]
df['returns_b'] = [x for x in np.random.randn(100)]
print(df.head())
   returns_a  returns_b
0   1.110042  -0.111122
1  -0.045298  -0.140299
2  -0.394844   1.011648
3   0.296254  -0.027588
4   0.603935   1.382290

fig, ax = plt.subplots()

然后我使用变量中指定的参数创建了数据框:

mean=np.average(df.returns_a)
std=np.std(df.returns_a)
maximum=np.max(df.returns_a)
minimum=np.min(df.returns_a)

pd.DataFrame(np.random.normal(loc=mean,scale=std,size=len(df.returns_a))).rename(columns={0: 'std_normal'}).plot(kind='density',colormap='Blues_r', ax=ax)
df.plot('returns_a', kind='density', ax=ax)

默认使用列0创建您正在使用的第二个数据帧。你需要重命名这个。

enter image description here

答案 1 :(得分:0)

我想出了一种更简单的方法。只需将列名称添加到数据框中即可。

for i in tickers:
    df = pd.DataFrame(dic_2[i],columns=['Empirical PDF'])
    print(df.head())
    mean=np.average(dic_2[i])
    std=np.std(dic_2[i])
    maximum=np.max(dic_2[i])
    minimum=np.min(dic_2[i])
    df1=pd.DataFrame(np.random.normal(loc=mean,scale=std,size=len(dic_2[i])),columns=['Normal PDF'])
    ax=df.plot(kind='density', title='Returns Density Plot for '+ str(i),colormap='Reds_r')
    df1.plot(ax=ax,kind='density',colormap='Blues_r')

enter image description here