TL'DR,垂直条形图以传统方式显示-事物从左到右排列。但是,当它转换为水平条形图(从bar
到barh
)时,一切都颠倒了。即,对于分组条形图,不仅分组条形的顺序是错误的,每个组的顺序也是错误的。
例如,来自http://dwheelerau.com/2014/05/28/pandas-data-analysis-new-zealanders-and-their-sheep/的图
如果你仔细观察,你会发现条形图和图例的顺序是相反的--牛肉在图例中显示在顶部,但在图表中显示在底部。
作为最简单的演示,我从这个图表www.example.com将kind='bar',
更改为kind='barh',
https://plot.ly/pandas/bar-charts/#pandas-grouped-bar-chart,结果如下所示:https://plot.ly/7/~xpt/
即,水平分组条形图中的条被颠倒排序。
怎么修?
编辑:@Ajean,实际上不仅分组栏的顺序错误,每个组的顺序也错误。Simple customization of matplotlib/pandas bar chart (labels, ticks, etc.)的图表清楚地显示了这一点:
我们可以看到,这个顺序也是非常规的,因为人们会期望图表是自上而下的,“AAA”在顶部,而不是底部。
如果你搜索“Excel颠倒”,你会发现人们在各地的Excel中抱怨这个问题。Microsoft Excel有一个修复它,做Matplotlib/Pandas/Searborn/Ploty/等有一个修复它?
4条答案
按热度按时间eimct9ow1#
我相信,群和子群的联合错误顺序可以归结为一个功能:
y
轴向上增加,如通常的图所示。尝试反转轴的y
轴,如以下无Pandas示例所示:特别是对于pandas,
pandas.DataFrame.plot
及其各种plotting子方法返回matplotlib axes对象,因此您可以直接反转其y轴:nr9pn0ug2#
我相信这个问题最简单的解决方案是在绘图之前反转pandas Dataframe 。例如:
在我看来,这是pandas barh函数中的一个bug。至少用户应该能够传递一个参数,如reverse_order = True等。
k3fezbri3#
我会认为这是一个bug,iiidoEe.,条形图的y位置没有正确分配。然而,补丁相对简单:
这只是一个正确的小节顺序,那就是...,正确的顺序。任何不正确的命令,因此是一个错误的命令。:p
um6iljoc4#
一般修复很简单: