Python 在正常条形图模式=';集团';方式

Python 在正常条形图模式=';集团';方式,python,plotly,Python,Plotly,在python中使用plotly,我想用多个y轴绘制条形图,因为其中一个轴的值明显大于另一个。 我曾尝试使用plotly.subplot.make_subplot解决此问题,但我无法让它们彼此相邻地进行绘图,类似于正常的plotlybarmode='group'功能 import plotly.graph_objects as go from plotly.subplots import make_subplots fig = make_subplots(specs=[[{'secondar

在python中使用plotly,我想用多个y轴绘制条形图,因为其中一个轴的值明显大于另一个。

我曾尝试使用
plotly.subplot.make_subplot
解决此问题,但我无法让它们彼此相邻地进行绘图,类似于正常的plotly
barmode='group'
功能

import plotly.graph_objects as go
from plotly.subplots import make_subplots

fig = make_subplots(specs=[[{'secondary_y': True}]])

fig.add_bar(name='group 1',x=x1, y=y1, secondary_y=False)

fig.add_bar(name='group 2', x=x2, y=y2, secondary_y=True)

fig.update_layout(
    xaxis_title='x-axis',
    yaxis_title='y-axis')
酒吧之间密不可分,我对make_suplots的参数进行了修改,但毫无效果

我怎样才能得到想要的结果

编辑:

我试过雅罗斯拉夫的答案,结果很有效。感觉像是次优实现,并在第二个y轴上对值进行关键点切割

当然很好知道,应该在大多数情况下工作,虽然如此,谢谢!
关键在于正确设置
go.Figure()对象中的一些参数。我希望这个例子是不言自明的:

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()
结果如下:


首先:谢谢@Jaroslav Bezděk的回答,这对我帮助很大

为了回答@Joram提出的y轴值图例切割问题: 您可以轻松地重新定位图例。下面的示例基于


这种方式可以工作,但感觉不太理想,关键点会切断第二个y轴值。我编辑原始帖子以显示。
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 and legend layout
fig.update_layout(barmode='group',
                  legend=dict(yanchor="top",y=0.99,xanchor="left",x=0.01))
fig.show()