Python 并排绘制两个条形图

Python 并排绘制两个条形图,python,pandas,matplotlib,Python,Pandas,Matplotlib,尽管我尽了最大努力,我还是找到了一个令人满意的答案,因此我在问如何解决我的问题。请不要太难,如果我已经错过,并已张贴答案 我想比较两组值,绘制为条形图,一组堆叠,另一组不堆叠 这是到目前为止我的代码 seqdf = pd.read_csv("%s/%s" % (folder, seqfile), header=None, sep=" ") pardf = pd.read_csv("%s/%s" % (folder, parfile), header=None, sep=" ") seqdf2

尽管我尽了最大努力,我还是找到了一个令人满意的答案,因此我在问如何解决我的问题。请不要太难,如果我已经错过,并已张贴答案

我想比较两组值,绘制为条形图,一组堆叠,另一组不堆叠

这是到目前为止我的代码

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()
它给了我:

然而,我希望两个数据集都在同一个图上,第一个数据集(顺序数据集)的宽度与第二个数据集的一个条形图的宽度相同


我怎样才能做到这一点呢?

这不是一个很好的解决方案,但您可以按如下方式进行:

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)

这是我的解决办法。我提供了两种解决方案,因为我不太清楚您的问题:

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')

我认为,您应该提供您的数据,以便社区能够理解(至少是样本数据)。我不希望pardf2被堆叠。如果是这种情况,您可以简单地键入
stacked=False
我仍然希望seqdf2被堆叠完美,我只需在第一个图中添加一个小的宽度=.05,以实现我想要的。谢谢