46

以下を使用して積み上げ棒グラフを作成しています。

DataFrame.plot(kind='bar',stacked=True)

バーがヒストグラムのように互いに接続されるように、バーの幅を制御したい。

ドキュメントに目を通しましたが、役に立ちませんでした - 何か提案はありますか? このようにすることは可能ですか?

4

4 に答える 4

90

この質問に出くわした人のために:

pandas 0.14 以降、バーを使用したプロットには「幅」コマンドがあります: https://github.com/pydata/pandas/pull/6644

上記の例は、次を使用するだけで解決できるようになりました

df.plot(kind='bar', stacked=True, width=1)

pandas.DataFrame.plot.barまたはpandas.DataFrame.plotを参照してくださいkind='bar'

figsize=バーの幅を変更する場合は、パラメータを指定して図のサイズを変更することも適切な場合があります。

于 2014-12-05T17:46:24.480 に答える
16

パンダがバーの幅を内部的に設定するため、matplotlib を使用してバープロットを「後処理」する必要があると思われる場合。

バーを形成する四角形はコンテナ オブジェクトにあります。したがって、これらのコンテナーを繰り返し処理し、長方形の幅を個別に設定する必要があります。

In [208]: df = pd.DataFrame(np.random.random((6, 5)) * 10,               
                        index=list('abcdef'), columns=list('ABCDE'))

In [209]: df
Out[209]: 
     A    B    C    D    E
a  4.2  6.7  1.0  7.1  1.4
b  1.3  9.5  5.1  7.3  5.6
c  8.9  5.0  5.0  6.7  3.8
d  5.5  0.5  2.4  8.4  6.4
e  0.3  1.4  4.8  1.7  9.3
f  3.3  0.2  6.9  8.0  6.1

In [210]: ax = df.plot(kind='bar', stacked=True, align='center')

In [211]: for container in ax.containers:
              plt.setp(container, width=1)
   .....:         

In [212]: x0, x1 = ax.get_xlim()

In [213]: ax.set_xlim(x0 -0.5, x1 + 0.25)
Out[213]: (-0.5, 6.5)

In [214]: plt.tight_layout()

stacked_bar.png

于 2013-02-12T23:14:31.553 に答える