Python:图例在熊猫多索引图上有错误的颜色



我正在尝试绘制来自 2 个独立 MultiIndex 的数据,每个索引中的数据与每个级别的级别相同。

目前,这正在生成两个单独的图,我无法通过附加一些字符串来个性化图表上的每一行来自定义图例。任何帮助将不胜感激!

这是到目前为止的方法:

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')

使用此函数调用:

sentisignal.plot_lead_trail_res(data_nasdaq_top_100_preprocessed_mi_res, data_nasdaq_top_100_preprocessed_mi_res_validate, ['AAL', 'AAPL'])

我得到下图:

当前地块

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

更新 2 [串联解决方案]

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

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

法典:

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')

图像:

多索引绘图图像

我认为

,与

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

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

官方程序将是类似的

fig = plt.figure(figsize=(5, 5)) # size in inch
ax = fig.add_subplot(111) # if you want only one axes

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

相关内容

最新更新