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,以实现我想要的。谢谢