30

パンダがいてDataFrame、凡例を含む棒グラフをプロットしたいと考えています。

import pylab as pl
from pandas import *

x = DataFrame({"Alpha": Series({1: 1, 2: 3, 3:2.5}), "Beta": Series({1: 2, 2: 2, 3:3.5})})

プロットを直接呼び出すと、凡例がプロットの上に配置されます。

x.plot(kind="bar")

プロットの凡例をオフにして後で追加しようとすると、DataFrame の 2 つの列に関連付けられた色が保持されません (以下を参照)。

x.plot(kind="bar", legend=False)
l = pl.legend(('Alpha','Beta'), loc='best')

Pandas DataFrame からの matplotlib プロットに凡例を含める正しい方法は何ですか? ここに画像の説明を入力

4

2 に答える 2

61

最も簡潔な方法は次のとおりです。

x.plot(kind="bar").legend(bbox_to_anchor=(1.2, 0.5))

または一般的に

x.plot(kind="bar").legend(*args, **kwargs)
于 2015-03-07T16:25:55.740 に答える
31

凡例を手動で追加する場合は、サブプロットにバー プロットの要素を要求する必要があります。

In [17]: ax = x.plot(kind='bar', legend=False)

In [18]: patches, labels = ax.get_legend_handles_labels()

In [19]: ax.legend(patches, labels, loc='best')
Out[19]: <matplotlib.legend.Legend at 0x10b292ad0>

また、plt.legend(loc='best')プロットax.legend(loc='best')の作成時に設定されたバー プロット パッチへの「リンク」が既に存在するため、「正常に機能する」必要があります。そのため、軸ラベルのリストを渡す必要はありません。

使用している pandas のバージョンがサブプロット ( ) へのハンドルを返すかどうかはax = ...わかりませんが、0.7.3 が返すことはかなり確信しています。でいつでも参照を取得できますplt.gca()

于 2012-07-08T16:16:39.380 に答える