Как изменить порядок переменных в группе, используя Plotly в Python? - PullRequest
0 голосов
/ 05 апреля 2020

Я использую пакет Plotly в Python и получаю следующий результат, используя образец набора данных из пакета:

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()

bar_plot

Однако, как вы можете видеть порядок дат - Солнце, Сб, Чет и Пт, а я хочу, чтобы это было Чет, Пт, Сб, Солнце. Я просматривал документацию, но безрезультатно, так как кажется, что я могу изменить только порядок самих групп, а не переменные внутри группы. Я также прилагаю небольшую выборку данных на всякий случай:

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

1 Ответ

0 голосов
/ 06 апреля 2020

Я закончил решение, но я опубликую свое решение на тот случай, если кому-то интересно, как это сделать. По сути, перед созданием гистограммы выполните сортировку:

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()

упорядоченный график

по желанию.

...