Plotly:仅在特定子图中堆叠条形

Mat*_*ias 9 layout subplot plotly

我有两个带有两列的条形图,创建如下:

fig = tools.make_subplots(rows=1, cols=2)
trace1 = go.Bar(x=x1 , y=y1)
trace2 = go.Bar(x=x2, y=y2)
fig.append_trace(trace1, 1, 1)
fig.append_trace(trace2, 1, 1)
trace3 = go.Bar(x=x3 , y=y3)
trace4 = go.Bar(x=x4, y=y4)
fig.append_trace(trace3, 1, 2)
fig.append_trace(trace4, 1, 2)
Run Code Online (Sandbox Code Playgroud)

我只想要带有堆叠条的第二个子图。我尝试了以下

fig['layout']["xaxis2"].update(barmode='stack')
Run Code Online (Sandbox Code Playgroud)

但这当然行不通。如何将“堆栈”属性仅应用于第二个子图而不是整个图形?

谢谢

Ran*_*hen 5

您可以使用offsetgroup = same(所有堆叠图中的相同数字)。
在第二个酒吧base=(first bar y)

    from plotly.subplots import make_subplots
    import plotly.graph_objects as go
    
    fig = make_subplots(rows=1, cols=2, shared_yaxes=True)
    
    fig.add_trace(go.Bar(name='dogs', x=[1, 2, 3], y=[4, 5, 6],
                         marker_color='blue',
                         marker=dict(color=[4, 5, 6], coloraxis="coloraxis")),
                  row=1, col=1)
    
    fig.add_trace(go.Bar(name='cats', x=[1, 2, 3], y=[1, 2, 3],
                         marker_color='yellow',
                         marker=dict(color=[4, 5, 6], coloraxis="coloraxis")),
                  row=1, col=1)
    female_y = [4,5,6]
    
    fig.add_trace(go.Bar(name='female', x=[1, 2, 3], y=female_y,
                         offsetgroup=1, marker_color='green',
                         marker=dict(color=[4, 5, 6])),
                  row=1, col=2)
    
    fig.add_trace(go.Bar(name='male', x=[1, 2, 3], y=[2, 3, 5],
                         offsetgroup=1, marker_color='red',
                         base = female_y ,
                         marker=dict(color=[2, 3, 5])),
                  row=1, col=2)
    
    fig.add_trace(go.Bar(name='others', x=[1, 2, 3], y=[1, 1.2, 2.5],
                         offsetgroup=2, marker_color='rgb(0,255,255)',
                         marker=dict(color=[2, 3, 5])),
                  row=1, col=2)
    
    fig.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


hou*_*anb 0

正如Plotly 程序员在本论坛答案barmode中所解释的那样,是一个图形范围的参数,因此目前这是不可能的。