У меня есть DataFrame со всеми моими данными, и у меня есть следующий порядок этапов
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)
Мой DataFrame находится в желаемом порядке в качестве словаря Order, но мой график продолжает менять позиции с помощью QUOTE и DEMO.
На самом деле не имеет значения, используется ли category_orders или нет, перепробовал кучу стилей и аранжировок словарей, но ни один из них не работает.
https://plotly.com/python-api-reference/generated/plotly.express.funnel.html category_orders (dict с ключами str и списком значений str (по умолчанию {})) — по умолчанию в Python 3.6+ порядок категориальных значений в осях, легендах и фасетах зависит от порядка, в котором эти значения впервые встречаются в data_frame (и по умолчанию в Python ниже 3.6 порядок не гарантируется). Этот параметр используется для принудительного упорядочения значений в столбце. Ключи этого dict должны соответствовать именам столбцов, а значения должны быть списками строк, соответствующих определенному желаемому порядку отображения.
Вот датафрейм с проблемой внизу с демо и ЦИТАТА
Проверьте изображение моей воронки здесь Воронка с неправильным порядком по сюжету
Спасибо! Если вы добавите код/текст к своему вопросу, я уверен, что кто-нибудь сможет вам помочь.
На мой взгляд, проблемы вызваны разницей в том, как Ploty ожидает, что входные данные будут выглядеть, и как выглядит ваш фрейм данных.
Графики воронки, кажется, предполагают, что все категории, присутствующие в конце воронки, присутствуют на каждом предыдущем этапе. Ваш Closing
source
отсутствует QUOTE
, а ваше значение из QUOTE
отсутствует в Demo
. Если вы добавите эти два значения, порядок должен быть правильным.
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
# правильный заказ
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')
Можете ли вы добавить свой фрейм данных к вопросу?