在Plotly Express漏斗中,如何重新排列de yaxis类别?

2024-06-25 23:03:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含所有数据的数据框,我有以下阶段顺序

order = {0:'NEW',1:'FOLLOW_UP',2:'Demo',3:'QUOTE',4:'CLOSING'}
fig = px.funnel(df, x='count', y='name', color='source',category_orders=order)

我的数据帧作为顺序字典完全符合所需的顺序,但我的图形通过引号和演示不断切换位置

事实上,如果使用或不使用分类顺序,这没有什么区别,尝试了一系列字典样式和排列,但似乎都不起作用

https://plotly.com/python-api-reference/generated/plotly.express.funnel.html category_orders(带str键的dict和str值列表(默认值{}))–默认情况下,在Python 3.6+中,轴、图例和面中的分类值顺序取决于这些值在data_框架中第一次遇到的顺序(在Python中,默认情况下在3.6以下的版本中不保证顺序)。此参数用于强制对每列的值进行特定排序。此dict的键应与列名相对应,值应为与所需的特定显示顺序相对应的字符串列表

Here is the DataFrame with the issue at the Bottom with Demo and QUOTE

在这里查看我的漏斗图像 Funnel with wrong order by plotly


Tags: the数据字典顺序demowith分类order
1条回答
网友
1楼 · 发布于 2024-06-25 23:03:08

在我看来,这些问题是由于Ploty期望输入数据的外观与dataframe的外观不同造成的

漏斗图似乎期望漏斗末端的所有类别都出现在前一阶段。您的Closingsource不存在QUOTE,并且Demo中缺少来自QUOTE的值。如果将这两个值相加,顺序应该正确

import plotly.express as px
import pandas as pd
import io

data = '''count name    source
0   NEW IG
2   NEW 0
1   NEW GCLID
1   NEW UTM
1   NEW UTM
1   NEW GCLID
1   NEW GLCID
7   NEW UTM
1   NEW GLCID
1   NEW GCLID
2   NEW 123
1   NEW GCLID
1   NEW GCLID
1   NEW FB
1   NEW FBCLID
1   NEW UTM
1   NEW UTM
1   NEW DATA
1   NEW R
1   NEW GCLID
11  NEW FB
1   NEW FB
7   NEW FB
1   NEW FB
1   NEW GCLID
1   NEW GCLID
1   NEW GCLID
1   FOLLOW_UP   FB
2   FOLLOW_UP   FB
1   FOLLOW_UP   0
1   FOLLOW_UP   IG
1   FOLLOW_UP   FB
1   FOLLOW_UP   FB
1   FOLLOW_UP   FB
2   FOLLOW_UP   123
3   DEMO    FB
1   QUOTE   123
1   QUOTE   123
2   QUOTE   123
3   CLOSING FB'''.splitlines()

df = pd.read_csv(io.StringIO('\n'.join(data)), sep='\t')
px.funnel(df, x='count', y='name', color='source')

# incorrect order

enter image description here #正确顺序

data.insert(-5, '0\tDEMO\t123')
data.insert(-2, '0\tQUOTE\tFB')
df = pd.read_csv(io.StringIO('\n'.join(data)), sep='\t')
px.funnel(df, x='count', y='name', color='source')

enter image description here

相关问题 更多 >