我想绘制以下数据框,行按“freq”列的值排序:
# import pandas as pd
# import plotly.express as px
EC_name freq EC_class
1.1.1.1 1.1.1.1 1.000000 Oxidoreductases
2.7.7.41 2.7.7.41 1.000000 Transferases
4.2.99.18 4.2.99.18 1.000000 Lyases
2.3.1.12 2.3.1.12 1.000000 Transferases
1.5.1.2 1.5.1.2 1.000000 Oxidoreductases
... ... ... ...
1.13.12.22 1.13.12.22 0.006494 Oxidoreductases
2.1.1.114 2.1.1.114 0.006494 Transferases
3.6.1.15 3.6.1.15 0.006494 Hydrolases
1.21.4.3 1.21.4.3 0.006494 Oxidoreductases
1.17.3.2 1.17.3.2 0.006494 Oxidoreductases
第一次尝试符合预期:
fig = px.scatter(df,
x = "EC_name",
y = "freq",
height=500,
width=500,
labels={"EC_name": "ECs", "freq": "Frequence in observations"})
但是,当我添加颜色代码
color="EC_class"
时,它会通过将类别分组在一起/按EC_name
而不是按freq
列的值对x轴排序来弄乱结果:
如何添加颜色并保持原始顺序?
谢谢
在
category_orders={"EC_name": df.index}
函数中添加 px.scatter
解决了这个问题。