我试着从两个独立的多重索引中绘制数据,每个索引的级别都是相同的。在
目前,这是在生成两个独立的绘图,我无法通过添加一些字符串来定制图例来个性化图形上的每一行。任何帮助都将不胜感激!在
目前的方法如下:
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}$我得到以下数字:
理想情况下,这两组线将在同一个图形上具有相同的轴!在
更新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')
图片:
我想,和
您将
plot()
的输出放入ax
,其中包括行,然后第二个函数调用将覆盖这些行。我说得对吗,先画的线不见了?在官方程序应该是
^{pr2}$现在在
ax
中有一个axes
对象,可以将其作为下一个绘图的输入。在相关问题 更多 >
编程相关推荐