我对订购条形图有疑问。例如:
http://pythonplot.com/#bar-counts
(ggplot(mpg) +
aes(x='manufacturer') +
geom_bar(size=20) +
coord_flip() +
ggtitle('Number of Cars by Make')
)
如何通过“mpg”订购?
答案 0 :(得分:3)
感谢has2k1:https://github.com/has2k1/plotnine/issues/94
如果x映射是有序分类,则会受到尊重。
from plydata import *
from plotnine import *
from plotnine.data import mpg
# count the manufacturer and sort by the count (see, plydata documentation
# or find out how to do the same thing using raw pandas)
m_categories = (
mpg
>> count('manufacturer', sort=True)
>> pull('manufacturer')
)
df = mpg.copy()
df['manufacturer'] = pd.Categorical(df['manufacturer'], categories=m_categories, ordered=True)
(ggplot(df) +
aes(x='manufacturer') +
geom_bar(size=20) +
coord_flip() +
ggtitle('Number of Cars by Make')
)
答案 1 :(得分:0)
在STHDA,我发现:
更改图例中的项目顺序函数scale_x_discrete 可以用于将项目顺序更改为“ 2”,“ 0.5”,“ 1”:
p + scale_x_discrete(limits=c("D2", "D0.5", "D1"))
我的目标是保留df的顺序,所以我这样做了:
scale_x_discrete(limits=df[xColumn].tolist())
然后我意识到第一个条形项目在末尾,所以我切换到:
scale_x_discrete(limits=df[xColumn].tolist()[::-1])
我无法使用reverse()
,因为它可以正常工作并且不会返回列表,因此limits
似乎看不到效果。