Как отсортировать гистограмму в plotly по убыванию?

мой код:

import plotly.graph_objects as go

def hist(x):
    return messages[x].value_counts()

fig = go.Figure(go.Bar(x = hist('kmeans').index,
                      y = hist('kmeans').values))
fig.update_layout(barmode = 'stack', xaxis = {'categoryorder': 'total descending'})
fig.show()

Ввожу этот код, который подсчитывает количество значений каждого класса, но гистограмма получается следующая: введите сюда описание изображения

Я хочу, гистограмма строилась по убыванию значения Y.

Столбец датафрейма, по которому хочу построить график:

введите сюда описание изображения


Ответы (1 шт):

Автор решения: handowl

Отвечая на ваш вопрос и не более, могу сказать, что отсортировать можно так:

messages = messages.sort_values(by='kmeans')

где-то в начале. НО

Это не сработает, видимо, из-за go.Bar(), который все равно преобразует по индексам и сортировка летит лесом.

Как найду решение этой проблемы, дополню ответ

UPD: Если по иксу числа - то plotly сортирует. Строки - нет, поэтому вот решение:

fig = go.Figure(go.Bar(x = list(map(str, hist('kmeans').index)),
                      y = hist('kmeans').values))
→ Ссылка