python - 如何使用 plotnine 对堆积条进行排序
问题描述
我有以下dataframe
import pandas as pd
from plotnine import *
df = pd.DataFrame({
'variable': ['gender', 'gender', 'age', 'age', 'age', 'income', 'income', 'income', 'income'],
'category': ['Female', 'Male', '1-24', '25-54', '55+', 'Lo', 'Lo-Med', 'Med', 'High'],
'value': [60, 40, 50, 30, 20, 10, 25, 25, 40],
})
df['variable'] = pd.Categorical(df['variable'], categories=['gender', 'age', 'income'])
我正在使用以下代码获取堆积条形图
(ggplot(df, aes(x='variable', y='value', fill='category'))
+ geom_col()
)
上面的代码取自这里
如何更改每个类别中的顺序。例如,我希望位于堆叠条age
1-24
的底部age
解决方案
您可以使用pd.Categorical
函数 with指定堆叠的列顺序ordered=True
。此属性可确保在绘图过程中以您想要的方式保留类别顺序:
# Categories are shown in a top-down order,
# so you must reverse 'ages' order to be shown in bottom-up fashion
cat_order = ['Female', 'Male', '55+', '25-54', '1-24', 'Lo', 'Lo-Med', 'Med', 'High']
df['category'] = pd.Categorical(df['category'], categories=cat_order, ordered=True)
推荐阅读
- r - 将已创建的变量分配给 R 中的新变量
- reactjs - 为什么复选框不检查?(反应)
- ios - Trello ios 应用程序深层链接不起作用
- r - 如果在 R 中的数据集的任何行中发生了某些事情,则创建一个虚拟对象
- javascript - 添加 onclick 函数以转到 url 代码
- javascript - 使用多个嵌套对象 Angular 初始化接口的更简单方法
- apache-kafka - kafka 标头,在消费者处
- r - R - Exclude rows from dataframe that don't contain certain values
- c - recv 不检索所有消息
- ios - 是否可以保存使用自定义数据提供程序的 PSPDFDocumentEditor 文档