按 CategoricalDtype 顺序对绘图图进行排序

Order plotly figure by CategoricalDtype order

提问人:Fabitosh 提问时间:11/11/2023 最后编辑:Fabitosh 更新时间:11/11/2023 访问量:32

问:

目标是按顺序可视化每个组的箱线图。组是和有序的。 我没有设法阴谋尊重秩序。相反,它仅按字母顺序排序。pd.CategoricalDtype

import pandas as pd
import numpy as np
import plotly.express as px

df = pd.DataFrame({'group': list('CAACCBAA'), 'values': np.random.random(8)})
cat_ordered = pd.CategoricalDtype(categories=['B', 'C', 'A'], ordered=True)
df['group'] = df['group'].astype(cat_ordered)

fig = px.box(df, x='group', y='values', 
             category_orders={'group': list(df.group.cat.categories)})
fig.update_xaxes(categoryorder='category ascending')
fig.show()

预期的顺序是 B - C - A。px.box output

我相信 plotly 不会从 pandas 数据帧中接管顺序,但手动设置它也无济于事。

plotly==5.17.0

python pandas plotly-python categorical-data

评论


答:

1赞 Timeless 11/11/2023 #1

Plotly 似乎以不同的方式对待和索引对象。list

传递后者(按类别返回)可以解决问题:

fig = px.box(df, x='group', y='values', template='plotly_dark',
             category_orders={'group': cat_ordered.categories}) # <-- updated
                                 # or df.group.cat.categories

fig.show();

enter image description here

评论

1赞 Fabitosh 11/11/2023
甚至还要付出额外的努力在黑暗模式下创建情节。非常感谢您的帮助!