2016-04-08 76 views
0

儘管我盡了最大的努力,我已經能夠找到令人滿意的答案,因此我問如何解決我的問題。如果我失蹤並且已經發布了答案,請不要太難。並排繪製兩條線路圖

我想比較兩組值,繪製爲條形圖,一個是堆疊的,另一個不是。

這裏是我到目前爲止的代碼

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

不過,我想對同一個圖形兩個數據集,與樂第一個(順序)是與第二個杆的一個一樣寬。

我該如何做到這一點?

+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

這裏是我的解決方案。我提供了兩種解決方案,因爲我沒有很清楚地瞭解你的問題:

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