2013-03-14 83 views
2

我有一个熊猫数据帧:如何摆脱额外的熊猫情节()的图例条目?

>>> drawdata 
        sales  mg 
ID  RPT_Date     
600809 20120331 22.1401 13.5591 
     20120630 38.1565 22.8968 
     20120930 52.5098 31.5909 

及以下命令绘制柱状图如下IMG:

>>> drawdata.unstack('ID').plot(kind='bar', use_index=True) 
<matplotlib.axes.AxesSubplot object at 0x035A9D70> 

enter image description here

我的问题显示为注释:如何获得摆脱额外的传奇入口?

(此URL相关: How to barplot Pandas dataframe columns aligning by sub-index?

编辑:(对于HYRY方法的更多信息)


# -*- coding: utf-8 -*- 

import itertools 
import pandas as pd 
import io 

text = '''\ 
ID RPT_Date sales mg 
000568 20120331 22.140 13.559 
000568 20120630 38.156 22.896 
000568 20120930 52.509 31.590 
''' 

drawdata = pd.read_csv(io.BytesIO(text), delimiter = ' ', converters = {0:str}) 
drawdata.set_index(['ID','RPT_Date'], inplace = True) 

ax = drawdata.unstack('ID').plot(kind='bar', use_index=True, legend=False) 

display_acct_list = list(drawdata.columns) 
legend_list = list(itertools.product(display_acct_list, list(set(drawdata.index.get_level_values('ID'))))) 
legend_list = [x[0] + '-' + x[1] for x in legend_list] 

ax.legend(legend_list, loc='best', fancybox=True, shadow=True) 

ax.set_xlabel("") 

图表中缺少图例中的 “颜色盒”。

enter image description here

回答

3

您可以通过关闭图例标题:

drawdata.unstack('ID').plot().get_legend().set_title("") 

或者,您可以自己绘制的传说:

import pylab as pl 
drawdata.unstack('ID').plot(legend=False) 
pl.legend(loc="best") 

对于你的第二个问题:

那是因为剧情中有一条虚线,如果你缩小一点,你会看到它。设置图例标签时,第一个标签将显示在虚线上。您可以通过以下行修复:

ax.legend(ax.containers, legend_list, loc='best', fancybox=True, shadow=True) 
+0

感谢您的代码。有用。但是,因为我需要自定义图例文本并将轴对象分配给变量以便稍后进行处理,所以我使用第二种方法。现在我遇到了另一个问题:传奇内的第一个“彩盒”丢失了!我将整个代码和图表附加到更新区域中。你可以看一下吗? – bigbug 2013-03-16 13:46:51

+0

好的,修复它,请再次检查答案。 – HYRY 2013-03-16 14:23:49

+0

太棒了!解决我最头痛的问题之一。非常感谢。 – bigbug 2013-03-17 01:35:30