Python:传说中Pandas的颜色不对

2024-09-28 16:50:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着从两个独立的多重索引中绘制数据,每个索引的级别都是相同的。在

目前,这是在生成两个独立的绘图,我无法通过添加一些字符串来定制图例来个性化图形上的每一行。任何帮助都将不胜感激!在

目前的方法如下:

def plot_lead_trail_res(df_ante, df_post, symbols=[]):

if len(symbols) < 1:
    print "Try again with a symbol list. (Time constraints)"
else:
    df_ante = df_ante.loc[symbols]
    df_post = df_post.loc[symbols]
    ante_leg = [str(x)+'_ex-ante' for x in df_ante.index.levels[0]]
    post_leg = [str(x)+'_ex-post' for x in df_post.index.levels[0]]
    print "ante_leg", ante_leg
    ax = df_ante.unstack(0).plot(x='SHIFT', y='MUTUAL_INFORMATION', legend=ante_leg)
    ax = df_post.unstack(0).plot(x='SHIFT', y='MUTUAL_INFORMATION', legend=post_leg)
    ax.set_xlabel('Time-shift of sentiment data (days) with financial data')
    ax.set_ylabel('Mutual Information')

使用此函数调用:

^{pr2}$

我得到以下数字:

Current plots

理想情况下,这两组线将在同一个图形上具有相同的轴!在

更新2[串联解决方案]

我已经解决了使用串联从多个帧打印的问题,但是图例与图形上的线条颜色不匹配。在

没有对图例的特定调用,并且plot()中的label参数尚未使用。在

代码:

df_ante = data_nasdaq_top_100_preprocessed_mi_res
df_post = data_nasdaq_top_100_preprocessed_mi_res_validate
symbols = ['AAL', 'AAPL']
df_ante = df_ante.loc[symbols]
df_post = df_post.loc[symbols]
df_ante.index.set_levels([[str(x)+'_ex-ante' for x in df_ante.index.levels[0]],df_ante.index.levels[1]], inplace=True)
df_post.index.set_levels([[str(x)+'_ex-post' for x in df_post.index.levels[0]],df_post.index.levels[1]], inplace=True)

df_merge = pd.concat([df_ante, df_post])
df_merge['SHIFT'] = abs(df_merge['SHIFT'])

df_merge.unstack(0).plot(x='SHIFT', y='MUTUAL_INFORMATION')

图片:

MultiIndex Plot Image


Tags: indfforindexshiftplotaxpost
1条回答
网友
1楼 · 发布于 2024-09-28 16:50:44

我想,和

ax = df_ante.unstack(0).plot(x='SHIFT', y='MUTUAL_INFORMATION', legend=ante_leg)

您将plot()的输出放入ax,其中包括行,然后第二个函数调用将覆盖这些行。我说得对吗,先画的线不见了?在

官方程序应该是

^{pr2}$

现在在ax中有一个axes对象,可以将其作为下一个绘图的输入。在

相关问题 更多 >