绘制-按数字y排序垂直堆叠的条形图

时间:2019-04-07 00:28:39

标签: python-3.x graph plotly plotly-dash

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

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

1)Stacked bar graphs in plotly: how to control the order of bars in each stack

2)Ordered bars on 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

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

1 个答案:

答案 0 :(得分:0)

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