在Plotly Python中添加次轴

在Plotly Python中添加次轴,python,graph,plotly,plotly-dash,Python,Graph,Plotly,Plotly Dash,我正在处理一个虚线图对象,我对它相当陌生。我试图传入一个图形,该图形在同一个图形上有两个散点图和一个条形图,但我希望条形图(绿色)位于它自己的第二个y轴上,因此它看起来比这里更好: 现在根据我对Dash的理解,我必须传递一个go.Figure()对象,这样我就有了一个定义数据和布局的函数。我在plotly文档中看到,您可以使用plotly express添加次轴,但我不确定如何在这里的框架内执行此操作。任何帮助都将不胜感激 这是我的密码: def update_running_graph(n_

我正在处理一个虚线图对象,我对它相当陌生。我试图传入一个图形,该图形在同一个图形上有两个散点图和一个条形图,但我希望条形图(绿色)位于它自己的第二个y轴上,因此它看起来比这里更好:

现在根据我对Dash的理解,我必须传递一个
go.Figure()
对象,这样我就有了一个定义
数据和
布局的函数。我在plotly文档中看到,您可以使用plotly express添加次轴,但我不确定如何在这里的框架内执行此操作。任何帮助都将不胜感激

这是我的密码:

def update_running_graph(n_intervals):
    df = pd.read_csv(filename)

    trace1 = go.Scatter(x=df['Timestamp'],
                        y=df['CLE'],
                        name='Crude',
                        mode='lines+markers')
    trace2 = go.Scatter(x=df['Timestamp'],
                        y=df['y_pred'],
                        name='Model',
                        mode='lines+markers')
    trace3 = go.Bar(x=df['Timestamp'],
                    y=df['ModelDiff'],
                    name='Diff',
                    )
    data = [trace1, trace2,trace3]
    layout = go.Layout(title='CLE vs Model')
    return go.Figure(data=data, layout=layout)
这应该是有用的。只需修改以适合您的代码,因为trace1和trace2看起来在相同的比例上,只需将trace3设置为次轴比例,您就应该进行设置。下面是一个只有2个的例子,但是添加第三个应该不会太难

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

# Create figure with secondary y-axis
fig = make_subplots(specs=[[{"secondary_y": True}]])

# Add traces
fig.add_trace(
    go.Scatter(x=[1, 2, 3], y=[40, 50, 60], name="yaxis data"),
    secondary_y=False,
)

fig.add_trace(
    go.Scatter(x=[2, 3, 4], y=[4, 5, 6], name="yaxis2 data"),
    secondary_y=True,
)

# Add figure title
fig.update_layout(
    title_text="Double Y Axis Example"
)

# Set x-axis title
fig.update_xaxes(title_text="xaxis title")

# Set y-axes titles
fig.update_yaxes(title_text="<b>primary</b> yaxis title", secondary_y=False)
fig.update_yaxes(title_text="<b>secondary</b> yaxis title", secondary_y=True)

fig.show()
导入plotly.graph\u对象
从plotly.subplot导入make_子地块
#使用辅助y轴创建地物
图=生成子图(规格=[{“次要”:True}]]
#添加痕迹
图1添加_轨迹(
go.Scatter(x=[1,2,3],y=[40,50,60],name=“yaxis数据”),
二次_y=假,
)
图1添加_轨迹(
go.Scatter(x=[2,3,4],y=[4,5,6],name=“yaxis2数据”),
第二个y=真,
)
#添加图形标题
图1.2.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1(
title_text=“双Y轴示例”
)
#设置x轴标题
图:更新xaxes(title\u text=“xaxis title”)
#设置y轴标题
图:更新雅克斯(title\u text=“主雅克斯title”,secondary\u y=False)
图更新(title\u text=“secondary yaxis title”,secondary\u y=True)
图2(图3)

干杯

要在仪表板中添加辅助y轴,可以执行以下操作:

def更新运行图(n个间隔):
df=pd.read\u csv(文件名)
trace1=go.Scatter(x=df['Timestamp'],
y=df['CLE'],
name='rude',
mode='lines+markers',
yaxis='y1')
trace2=go.Scatter(x=df['Timestamp'],
y=df['y_pred'],
name='Model',
mode='lines+markers',
yaxis='y1')
trace3=go.Bar(x=df['Timestamp'],
y=df['ModelDiff'],
name='Diff',
yaxis='y2'
)
数据=[trace1,trace2,trace3]
布局=go.layout(title='CLE vs Model',
yaxis=dict(标题为“原油和模型”),
yaxis2=dict(title='Moddel Difference',
叠加class='y',
侧(右)
返回go.Figure(数据=数据,布局=布局)

您可以添加更多的y轴,它们始终需要具有i轴的形式
yi
。然后,在布局中,您可以使用
yaxisi=dict(…)

指定第i轴的布局,我将继续获得以下信息:ValueError:plotly.subplot.make_子地块只能在v4_子地块plotly_未来模式中使用。若要试用,请在导入plotly之前从plotly\u future import v4\u子批次运行>>>。我已将我的版本更新为4,因为它已过期,但仍然无法运行如果您有导入问题,您将希望同时使用
pip
conda
卸载
plotly
,然后使用其中一个重新安装。