Max*_*nis 6 python pandas plotly plotly-python
在不使用时,使用 Plotly 绘制条形图可以保留数据集的顺序color:
import pandas as pd
import plotly.express as px
df = pd.DataFrame({'val': [1, 2, 3],
'type': ['b', 'a', 'b']},
index=['obs1', 'obs2', 'obs3'])
px.bar(df, 'val')
Run Code Online (Sandbox Code Playgroud)
px.bar(df, 'val', color='type')
Run Code Online (Sandbox Code Playgroud)
如何在使用colorarg 时保留原始顺序?
这类似于如何在 R Plotly 条形图中使用颜色变量保留所需的顺序,但我使用的是 Python 而不是 R。
您可以使用该category_orders参数:
import pandas as pd
import plotly.express as px
df = pd.DataFrame({'val': [1, 2, 3],
'type': ['b', 'a', 'b']},
index=['obs1', 'obs2', 'obs3'])
fig = px.bar(df, 'val', color='type', category_orders={'index': df.index[::-1]})
fig.show()
Run Code Online (Sandbox Code Playgroud)
输出
从文档中:
此参数用于强制每列值的特定顺序。该字典的键应与列名相对应,值应是与所需的特定显示顺序相对应的字符串列表。
通过查看代码,它似乎color被用作分组属性,因此这可能就是发生重新排序的原因。
小智 5
我真的不知道为什么plotly express 这样做,但您可以使用解决方法,即使用数组对 yaxis 重新排序fig.update_layout( yaxis={'categoryorder':'array', 'categoryarray':df.index}):
import pandas as pd
import plotly.express as px
df = pd.DataFrame({'val': [1, 2, 3],
'type': ['b', 'a', 'b']},
index=['obs1', 'obs2', 'obs3'])
fig=px.bar(df, x='val',y=df.index, orientation='h')
fig=px.bar(df, x='val',y=df.index, color='type', orientation='h')
fig.update_layout( yaxis={'categoryorder':'array', 'categoryarray':df.index})
Run Code Online (Sandbox Code Playgroud)
结果:
| 归档时间: |
|
| 查看次数: |
3199 次 |
| 最近记录: |