Python熊猫多索引绘图的图例颜色不正确
当试图从Python多索引中绘制信息时,这似乎是一个普遍且重复(且未解决)的问题 绘图代码:Python熊猫多索引绘图的图例颜色不正确,python,pandas,matplotlib,legend,multi-index,Python,Pandas,Matplotlib,Legend,Multi Index,当试图从Python多索引中绘制信息时,这似乎是一个普遍且重复(且未解决)的问题 绘图代码: df.unstack(0).plot(x='SHIFT', y='INFORMATION_SURPLUS_PCT') 将呈现以下图形: 不幸的是,图例线的颜色与图表上的线不匹配,我也尝试了以下代码来提供图例,但仍然不匹配: df.unstack(0).plot(x='SHIFT', y='INFORMATION_SURPLUS_PCT', legend=df.index.levels) 示例df:
df.unstack(0).plot(x='SHIFT', y='INFORMATION_SURPLUS_PCT')
将呈现以下图形:
不幸的是,图例线的颜色与图表上的线不匹配,我也尝试了以下代码来提供图例,但仍然不匹配:
df.unstack(0).plot(x='SHIFT', y='INFORMATION_SURPLUS_PCT', legend=df.index.levels)
示例df:
INFORMATION_SURPLUS_DIFF INFORMATION_SURPLUS_PCT \
SYMBOL
LBTYB 0 0.000000 0.000000
1 0.015046 11.206891
2 0.042249 31.468118
3 0.005421 4.037495
4 -0.005569 0.000000
5 -0.069742 0.000000
6 0.036281 27.022972
7 0.072626 54.093432
8 -0.026966 0.000000
9 -0.048241 0.000000
10 0.145121 108.088780
MNST 0 0.000000 0.000000
1 0.062962 0.000000
2 0.029280 0.000000
3 0.056574 63.569509
4 0.088341 99.265331
5 0.052083 0.000000
6 0.041253 46.353665
7 0.058658 65.911282
8 0.080748 90.732985
9 0.031419 0.000000
10 0.055326 62.167628
MUTUAL_INFORMATION SHIFT
SYMBOL
LBTYB 0 0.134261 0
1 0.149307 -1
2 0.176510 -2
3 0.139681 -3
4 0.128692 -4
5 0.064518 -5
6 0.170542 -6
7 0.206887 -7
8 0.107294 -8
9 0.086020 -9
10 0.279381 -10
MNST 0 0.088995 0
1 0.151957 -1
2 0.118276 -2
3 0.145569 -3
4 0.177337 -4
5 0.141078 -5
6 0.130248 -6
7 0.147653 -7
8 0.169743 -8
9 0.120414 -9
10 0.144322 -10
此代码段将起作用,它涉及到将多索引分组并在循环中打印到同一图形,以进行改进:
grouped = df.groupby(level=0)
ax = plt.figure()
first = True
for i, group in grouped:
print i
if first:
ax = group.plot(x='SHIFT', y='INFORMATION_SURPLUS_PCT', label=str(i))
first = False
else:
group.plot(ax=ax, x='SHIFT', y='INFORMATION_SURPLUS_PCT', label=str(i))
新绘图图像:
我想你可以试试:
fig, ax = plt.subplots(figsize=(8,6))
for i, grp in df.groupby(level=0):
grp.plot(x='SHIFT', y='INFORMATION_SURPLUS_PCT', label=str(i), ax=ax)
看起来要绘制多条曲线——可能在原始曲线的顶部。我们需要一个简单的工作示例来帮助您。特别是,您需要向我们展示一些构造
df
的方法,以便我们可以看到其中实际包含的数据。@Mike我现在就添加它!(补充)这肯定比我发布的解决方案更优雅-再次感谢!