首页 > 解决方案 > Python - Plotly - 多轴图上的动态 y 轴选择

问题描述

我有一个多列的数据框,每列都包含一个时间序列。我想一次比较两个时间序列图,为此我将它们与两个 y 轴重叠绘制,如下例所示:https ://plot.ly/python/multiple-axes/#two-y-轴

我的问题是:

  1. 我想让用户一次只选择两条轨迹,

  2. 根据选择/取消选择的轨迹动态更改和调整 y 轴

基于上面链接中给出的示例:

import plotly
import plotly.plotly as py
import plotly.graph_objs as go

trace1 = go.Scatter(x=[1, 2, 3],y=[40, 50, 60],name='yaxis data')
trace2 = go.Scatter(x=[2, 3, 4],y=[4, 5, 6],name='yaxis2 data',yaxis='y2')
trace3 = go.Scatter( x=[3, 4, 5],y=[400, 500, 600],name='yaxis3 data',    yaxis='y2', visible = 'legendonly')
data = [trace1, trace2, trace3]
layout = go.Layout(
    title='Double Y Axis Example',
    yaxis=dict(
        title='yaxis title'
    ),
    yaxis2=dict(
        title='yaxis2 title',
        titlefont=dict(
            color='rgb(148, 103, 189)'
        ),
        tickfont=dict(
            color='rgb(148, 103, 189)'
        ),
        overlaying='y',
        side='right'
    )
)
fig = go.Figure(data=data, layout=layout)
plotly.offline.plot(fig)

所以 plotly 应该让用户一次只选择两条迹线在绘图上可见,并动态地将下一个选定的迹线放在可用的 y 轴侧。

例如,如果“yaxis data”和“yaxis2 data”可见,则用户必须在从图例中选择“yaxis3 data”之前取消选择其中任何一个。因此,如果用户取消选择位于绘图左侧的“yaxis data”,则“yaxis3 data”的 y 轴标签应位于左侧。如果用户未选择“yaxis2 数据”,则新数据将位于右侧。

我希望yaxis= 'y' or 'y2'通过交互式会话分配。我不知道如何实现。

标签: pythonplotlymultiple-axes

解决方案


推荐阅读