2016-04-08 79 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