Обратный порядок легенды без изменения порядка столбцов на графике plotly express bar plot

Я хочу изменить порядок элементов в легенде plotly.express столбчатой ​​диаграммы. Например, я хотел бы показать на этом графике "Ужин перед обедом" (текущее поведение особенно неудобно для графиков с горизонтальными полосами, поскольку порядок полос противоположен порядку в легенде):

import plotly.express as px
df = px.data.tips()
# Sort to put dinner on top.
df.sort_values('time', ascending=False, inplace=True)
fig = px.bar(df, y='sex', x='total_bill', color='time', barmode='group',
             orientation='h')
fig.update_layout(yaxis={'categoryorder': 'total ascending'})
fig.show()

результат графика


person Max Ghenis    schedule 27.06.2020    source источник
comment
Отвечает ли это на ваш вопрос? Плотная настройка порядка легенды   -  person vestland    schedule 29.06.2020
comment
@vestland Я так не думаю, он не использует plotly.express и хотя упоминает traceorder, он не предлагает простой ответ, который я дал, legend={'traceorder': 'reversed'}.   -  person Max Ghenis    schedule 01.07.2020


Ответы (1)


Добавьте legend={'traceorder': 'reversed'} в инструкцию update_layout:

import plotly.express as px
df = px.data.tips()
# Sort to put dinner on top.
df.sort_values('time', ascending=False, inplace=True)
fig = px.bar(df, y='sex', x='total_bill', color='time', barmode='group',
             orientation='h')
fig.update_layout(yaxis={'categoryorder': 'total ascending'},
                  legend={'traceorder': 'reversed'})
fig.show()

результат сюжета

person Max Ghenis    schedule 27.06.2020