2016-03-16 25 views
2

這似乎是一個基因重複(和未解決)的問題,當試圖從Python Pandas MultiIndex繪製信息時。Python Pandas MultiIndex劇情有錯誤的彩色圖例

的繪製代碼:

df.unstack(0).plot(x='SHIFT', y='INFORMATION_SURPLUS_PCT') 

將呈現如下圖:

Pandas MultiIndex graph

不幸的是,傳說中線條的顏色不匹配圖上的線,我也嘗試下面的代碼來提供一個圖例,但這仍然不匹配:

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 
+0

看起來多條曲線越來越繪製 - 可能與原件的頂部。我們需要一個最小的工作示例來幫助您。尤其是,您需要向我們展示構建'df'的一些方法,以便我們可以看到實際存在的數據。 – Mike

+0

@Mike我現在就添加! (已添加) – jfive

回答

1

我想你可以嘗試:

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) 

graph

+0

這絕對比我發佈的解決方案更優雅 - 再次感謝! – jfive

+0

不客氣。謝謝。 – jezrael

0

該代碼段將工作,它涉及到分組的多指標,並密謀在一個循環中相同的數字 - 開放的改進:

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

新劇情圖像:

enter image description here