首页 > 解决方案 > Plotly – 按数字 y 对垂直堆积条形图进行排序

问题描述

我需要能够根据每个堆栈中的数字 y 值对堆积条形图进行排序。在 Plotly 的 R 版本中似乎有一个解决这个问题的解决方案,但我还没有找到一个用于 Python 的解决方案,或者更具体地说,Plotly Dash。

以下是如何在 R 中解决此排序问题的两个示例:

1)plotly中的堆叠条形图:如何控制每个堆叠中条形的顺序

2) plotly 上的有序条形图

这是 Plotly 堆叠条形图的基本代码:

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'}
)

但是是否也可以使用 Plotly Dash (Python) 按数字 y 值对每个堆栈进行排序?如果对每个堆叠条进行排序,使得每个堆叠条中的最低 y 值位于条的底部(无论跟踪如何),以下是预期结果:

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

现在似乎只能对类别进行排序。

标签: python-3.xgraphplotlyplotly-dash

解决方案


只需切换跟踪的顺序。Plotly 绘制轨迹,并根据您编写轨迹的顺序显示图例。


推荐阅读