我试图比较数据帧中的两列,并希望使用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注释中的代码后):
事实上,我看到了重要的情节。这很接近我的需要。在
要使用seaborn,您必须使用使用
melt
创建的中间数据帧来生成“长格式”数据帧。在然后使用
^{pr2}$hue=
参数绘制两列:根据要求调整标签相当容易(您会发现许多其他示例):
相关问题 更多 >
编程相关推荐