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>

ここに画像の説明を入力

私の質問は注釈として表示されます: 余分な凡例エントリを取り除く方法は?

(この URL は関連しています: How to barplot Pandas dataframe columns aligning by sub-index? )

EDIT:(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("")

チャートの凡例に「カラー ボックス」がありません。

ここに画像の説明を入力

4

1 に答える 1

3

次の方法で凡例のタイトルをオフにできます。

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

または、自分で凡例を描くこともできます。

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

2番目の質問:

これは、プロットに破線があるためです。少しズームアウトすると、それが表示されます。凡例ラベルを設定すると、最初のラベルが破線になります。次の行で修正できます。

ax.legend(ax.containers, legend_list, loc='best', fancybox=True, shadow=True)
于 2013-03-14T14:06:57.133 に答える