Plotly - сортировать вертикальную гистограмму по числовому - PullRequest
2 голосов
/ 07 апреля 2019

Мне нужно иметь возможность сортировать гистограмму с накоплением на основе числовых значений y в каждом стеке.Похоже, что в R-версии Plotly есть решение, которое решает эту проблему, но я еще не нашел его для Python или, более конкретно, Plotly Dash.

Вот два примера того, как эта проблема сортировки может быть решена в R:

1) Сложенные гистограммы на графике: как управлять порядком баров в каждом стеке

2) Упорядоченные столбцы на графике

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

import plotly.plotly as py
import plotly.graph_objs as go

trace1 = go.Bar(
    x=['giraffes', 'orangutans', 'monkeys'],
    y=[20, 14, 23],
    name='SF Zoo'
)
trace2 = go.Bar(
    x=['giraffes', 'orangutans', 'monkeys'],
    y=[12, 18, 29],
    name='LA Zoo'
)

data = [trace1, trace2]
layout = go.Layout(
    barmode='stack',
)

fig = go.Figure(data=data, layout=layout)
py.iplot(fig, filename='stacked-bar')

Вот фактический результат:

https://i.imgur.com/32ZLw6P.png

Сортировка этих столбцов по оси x (категориальная) очень проста.Единственный код, необходимый для сортировки x в алфавитном порядке:

layout = go.Layout(
    barmode='stack',
    xaxis={'categoryorder': 'category ascending'}
)

Но можно ли также сортировать каждый стек по числовым значениям y с помощью Plotly Dash (Python)?Вот каков ожидаемый результат, если бы каждый столбец с накоплением был отсортирован так, что наименьшее значение y в пределах каждого столбца с накоплением находится внизу столбца (независимо от трассы):

https://i.imgur.com/7V3CQFQ.png

Сейчас кажется, что можно сортировать только категории.

...