以下を使用して積み上げ棒グラフを作成しています。
DataFrame.plot(kind='bar',stacked=True)
バーがヒストグラムのように互いに接続されるように、バーの幅を制御したい。
ドキュメントに目を通しましたが、役に立ちませんでした - 何か提案はありますか? このようにすることは可能ですか?
以下を使用して積み上げ棒グラフを作成しています。
DataFrame.plot(kind='bar',stacked=True)
バーがヒストグラムのように互いに接続されるように、バーの幅を制御したい。
ドキュメントに目を通しましたが、役に立ちませんでした - 何か提案はありますか? このようにすることは可能ですか?
この質問に出くわした人のために:
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=
バーの幅を変更する場合は、パラメータを指定して図のサイズを変更することも適切な場合があります。
パンダがバーの幅を内部的に設定するため、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()