Plotly:具有多个轴的分组条形图

2022-01-21 00:00:00 python plotly plot bar-chart multiple-axes

问题描述

当我在 Layout 中设置 barmode='group'trace2 = Bar(...,yaxis='y2') 时,这会导致条形图被堆叠或覆盖,而不是对它们进行分组.如何在有多个轴的情况下对条形进行分组?

我浏览了这些但无济于事:

  • When I set barmode='group' in Layout while trace2 = Bar(...,yaxis='y2'), this leads bars to be stacked or overlayed instead of grouping them. How can I group the bars while having multiple axes?

    I went over these but no avail:

    • With single Y axis grouped bar chart is shown here.
    • Multiple axes is also explained here and reference for y-axis is available here

    解决方案

    I hope the code below, based on zoo example, will be self-explanatory, however you have to set yaxis and offsetgroup parameters in go.Bar() object, and also yaxis2 parameter in layout parameter of go.Figure() object properly. The code is following:

    import plotly.graph_objects as go
    animals=['giraffes', 'orangutans', 'monkeys']
    
    fig = go.Figure(
        data=[
            go.Bar(name='SF Zoo', x=animals, y=[200, 140, 210], yaxis='y', offsetgroup=1),
            go.Bar(name='LA Zoo', x=animals, y=[12, 18, 29], yaxis='y2', offsetgroup=2)
        ],
        layout={
            'yaxis': {'title': 'SF Zoo axis'},
            'yaxis2': {'title': 'LA Zoo axis', 'overlaying': 'y', 'side': 'right'}
        }
    )
    
    # Change the bar mode
    fig.update_layout(barmode='group')
    fig.show()
    

    The result looks like this:

相关文章