2016-04-08 6 views
0

私は、私の最善の努力にもかかわらず、私は満足のいく答えを見つけることができたので、私は自分の問題を解決する方法を求めています。私が行方不明になって既に回答を投稿していれば、しっかりとしないでください。2つのバープロットを並んで並べる

2つの値のセットを比較したいと思います。棒グラフ、積み重ねられたもの、積み重ねられていないものがあります。ここで

は私のコードは、これまで

seqdf = pd.read_csv("%s/%s" % (folder, seqfile), header=None, sep=" ") 
pardf = pd.read_csv("%s/%s" % (folder, parfile), header=None, sep=" ") 

seqdf2 = pd.DataFrame(seqdf.mean().values, columns=['sequencial']).T 
pardf2 = pd.DataFrame(pardf.mean().values, columns=['parallel']).T 

plt.figure(1) 
colors = plt.cm.GnBu(np.linspace(.3, 1, 16)) 

plt.subplot(1,2,1) 
seqdf2.plot.bar(color=colors, ax=plt.gca(), align='center', stacked=True) 

plt.subplot(1,2,2) 
pardf2.plot.bar(color=colors, ax=plt.gca()) 

plt.show() 

あり、それは私を与える: enter image description here

私はル最初のもの(シーケンシャル)であることと、同じグラフ上の両方のデータセットを持っているしたいのですが2つ目のバーの1つと同じくらい広い。

どのように達成できますか?

+0

私が思うに、あなたはあなたを提供する必要がありますコミュニティが理解できるようにするためのデータ(少なくともサンプルデータ)。 – Spider

答えて

1

あまり派手なソリューションが、次のようにあなたはそれを行うことができます:ここで

data = pd.concat([seqdf2, pardf2]) 
sp = plt.subplot(111) 

data.mul([1, 0], axis=0).plot.bar(color=colors, 
            ax=sp, 
            align='center', 
            stacked=True) 

data.mul([0, 1], axis=0).plot.bar(color=colors, 
            ax=sp, 
            legend=False) 
+0

完璧な、私はちょうど私が望むことを達成するために最初のプロットに小さな幅= .05を加えなければなりませんでした。ありがとう – Amxx

0

は私のソリューションです。私ははっきりあなたの問題を理解していなかったので、私は2つのソリューションを提供します。

new_df = pd.concat([seqdf2, pardf2]) 

オプション1

new_df.plot(kind='bar', stacked=True, colors = colors) 
plt.legend(loc='best') 

オプション2

new_df = new_df.unstack().unstack() 
new_df.plot(kind='bar', stacked=True, colors = colors) 
plt.legend(loc='best') 
+0

私はpardf2を積み重ねたくありません – Amxx

+0

この場合、 'stacked = False'と入力するだけです – Spider

+0

まだ積み重ねたいseqdf2 – Amxx