python - 如何在 Python 中使用 Plotly 更改组中变量的顺序?
问题描述
我在 Python 中使用 Plotly 包,并使用包中的示例数据集获得以下结果:
import plotly.express as px
df = px.data.tips()
fig = px.bar(df, x="sex", y="total_bill", color='day', barmode='group',height=400)
fig.show()
但是,您可以看到日期的顺序是 Sun、Sat、Thur 和 Fri,而我希望它是 Thur、Fri、Sat、Sun。我正在查看文档但无济于事,因为似乎我只能更改组本身的顺序,而不是组内的变量。我还附上了一小部分数据以防万一:
print(df)
total_bill tip sex smoker day time size
0 16.99 1.01 Female No Sun Dinner 2
1 10.34 1.66 Male No Sun Dinner 3
2 21.01 3.50 Male No Sun Dinner 3
3 23.68 3.31 Male No Sun Dinner 2
4 24.59 3.61 Female No Sun Dinner 4
.. ... ... ... ... ... ... ...
239 29.03 5.92 Male No Sat Dinner 3
240 27.18 2.00 Female Yes Sat Dinner 2
241 22.67 2.00 Male Yes Sat Dinner 2
242 17.82 1.75 Male No Sat Dinner 2
243 18.78 3.00 Female No Thur Dinner 2
解决方案
我最终解决了它,但我会发布我的解决方案,以防有人想知道如何去做。基本上,在创建条形图之前进行排序:
import numpy as np
conditions = [(df['day'] == 'Thur'), (df['day'] == 'Fri'),
(df['day'] == 'Sat'), (df['day'] == 'Sun')]
choices = [0,1,2,3]
df['order'] = np.select(conditions, choices)
df = df.sort_values(by='order')
fig = px.bar(df, x="sex", y="total_bill", color='day', barmode='group',height=400)
fig.show()
如预期的。
推荐阅读
- python - 如何在已经具有复杂数据类型的数组的对角线上生成复数?
- rest - Acumatica - 我们如何通过“0”价格的 Acumatica 订单项
- winforms - 如何再次看到失控?
- html - 在 django 模板中使用变量作为 dict 键
- java - 将现有项目传递给 androidx 让我无法解析 com.google.android:support-v4:r11
- swift - 我越来越 ”
:0: 错误:无法在 cygwin 上加载 swift 标准库 - microsoft-graph-api - 生成的令牌无法访问 Graph APi 以读取共享邮箱消息
- java - 如何解析xml?
- xamarin - 如何将视频从 uri 保存到内部存储?
- python - 制作一个返回多项式的函数