2017-02-09 5 views
6

チャート:matplotlibの:バー上のパンダのデータフレームのプロット複数の列は、私は棒グラフをプロットするには、次のコードを使用しています

import matplotlib.pyplot as pls 
my_df.plot(x='my_timestampe', y='col_A', kind='bar') 
plt.show() 

プロットは正常に動作します。しかし、私は3つの列を持つことによってグラフを改善したい: 'col_A'、 'col_B'、および 'col_C'はすべてプロット上にある。以下の例の図のように:

enter image description here

Iは、x軸上のx軸上に青色で表示col_A、x軸の下に赤色でcol_B、及び緑色でcol_Cを希望します。これはmatplotlibでも可能ですか?どのように3つの列すべてをプロットするために変更を加えるのですか?ありがとう!

答えて

19

ploty引数に列名のリストを指定すると、複数の列を同時にプロットすることができます。

df.plot(x="X", y=["A", "B", "C"], kind="bar") 

enter image description here

これはバーが隣同士に座っているグラフを生成します。

これらを重複させるには、plotを何回か呼び出して、プロットする軸をプロットに引数axとして指定する必要があります。あなたは第三列目の青と緑の色を見ることができないので、

import pandas as pd 
import matplotlib.pyplot as plt 
import numpy as np 

y = np.random.rand(10,4) 
y[:,0]= np.arange(10) 
df = pd.DataFrame(y, columns=["X", "A", "B", "C"]) 

ax = df.plot(x="X", y="A", kind="bar") 
df.plot(x="X", y="B", kind="bar", ax=ax, color="C2") 
df.plot(x="X", y="C", kind="bar", ax=ax, color="C3") 

plt.show() 

enter image description here

+0

2番目のグラフは吸います。最後のものが非常に高い低い値のイベントを表示することを変更することは可能です – hudi

+0

2番目のプロットは、すべてのバーに対してプロットされた最初の列の値が最も高い場合にのみ意味を持ちます。これは質問からの望ましい出力の場合と思われる。そうでなければ、私はこの種のプロットを使用することをお勧めしませんし、積み重ねられたプロットを使用するか、最初のソリューションのグループ化された棒をここで使用してください。もちろん、透明度(α)を実験し、後者の解決法が魅力的な結果をもたらすかどうかを見ることができます。説明のために – ImportanceOfBeingErnest

+0

ah ok thx – hudi

関連する問題