【发布时间】:2018-12-19 20:20:28
【问题描述】:
我正在尝试比较数据框中的两列,并希望使用 Seaborn 将它们绘制为水平条形图。在下图中,仅绘制了一列('budget2019')。
1) 我如何在它旁边绘制第二列 ('budget2018'),以便更好地查看两列值之间的演变,并直观地比较每个“部”的两个条形?
2) 如何将 x 值放在每个条的末尾,以便人们可以看到(读取)每个条上的 x 值,而不必低头,并尝试近似价值?因为现在在实际情节上,人们无法真正直接从条形图中读取 x 值。 (看图很难得到准确的值)
3) 在我将它绘制在“budget2019”条旁边的“budget2018”条之后,有没有办法将演变百分比也放在图上?为了在视觉上更好地阅读,两列之间的百分比变化是多少?
这是我的数据框:
这是我现在用来绘制的代码:
plt.figure(figsize=(15,8))
sns.set(style="darkgrid")
#ax = sns.barplot(x="budget2018", y="ministere", data=budget, label="Total")
sns.set_color_codes("pastel")
sns.barplot(x="budget2019", y="ministere", data=budget, label="Budget 2019")
sns.despine(left=True, bottom=True)
plt.tight_layout()
plt.show()
PS:如果 Seaborn 不可行,单独使用 Matplotlib 的解决方案也可以。需要的是水平条,就像我的情节一样,否则 yticks 不可读。
编辑(使用 ImportanceOfBeingErnest 评论中的代码后):
@ImportanceOfBeingErnest 评论后,这是我实际看到的情节。它非常接近我的需要。
【问题讨论】:
-
您应该始终将 df 发布为纯文本,因为人们很难将其输入以帮助您。我们很懒,喜欢复制粘贴!
-
一次问题太多了。或者说“太宽泛”。您的第一个问题可以通过
df.set_index("ministere").plot.bar()完成。第二个问题经常被问到,实际上很难在搜索时错过其中一个重复项。第三个问题可能很有趣。但你忘了告诉你如何你想象的样子。 -
非常感谢您的帮助@ImportanceOfBeingErnest 它帮了很多忙!现在,是的,我是怎么想的。我想说,对我来说最好的办法是:1)左侧的“budget2019”的值,按 yticks,在每个 ytick 文本的开头(在括号),以及每个 'ministere' 的每 2 个小节前面的 evolution_percent 值。我希望你明白我的意思? ://
标签: python pandas matplotlib plot seaborn