Python Plotly - Layout di più legende YAXIS [duplicato]

Jan 18 2021

Sto cercando di costruire 2 grafici sovrapposti sulla stessa figura, un grafico a barre e una linea di tendenza con il codice seguente:

data = []

for __brand in df_cumsum['brand'].unique():

    data.append(go.Scatter(
        x=df_cumsum.loc[df_cumsum['brand'] == __brand, :]['day'],
        y=df_cumsum.loc[df_cumsum['brand'] == __brand, :]['ecpm_cum'],
        name=__brand,
        yaxis='y1'
    ))

    data.append(go.Bar(
        x=df_cumsum.loc[df_cumsum['brand'] == __brand, :]['day'],
        y=df_cumsum.loc[df_cumsum['brand'] == __brand, :]['impressions_cum'],
        name=__brand,
        yaxis='y2',
        opacity=0.3
    ))

figure = {'data': data,
          'layout': {'title': 'Delivery Performance Over Test Period (Days)',
                     'yaxis': {'title': 'Cumulative eCPM (USD)'},
                     'yaxis2': {'title': 'Cumulative Delivery (Impressions)', 'side': 'right', 'overlaying': 'y'}}}

Di conseguenza, ho qualcosa di simile al precedente in cui entrambe le leggende per l'asse y sinistra e l'asse y destra sono mescolate insieme.

Qualcuno sa come posso mettere ciascuno sul suo lato rilevante? Legenda per asse y sinistra a sinistra e legenda per asse y destra a destra? Grazie in anticipo !

Risposte

DerekO Jan 18 2021 at 16:31

Sfortunatamente, Plotly non supporta più leggende . Questa è una questione aperta.

Puoi nascondere gli elementi della legenda sinistra dall'unica legenda che hai ora, quindi utilizzare una casella di annotazioni rettangolare con il testo dei nomi delle variabili di tendenza della linea per costruire la legenda sinistra da zero. Tuttavia, la legenda non avrà effettivamente alcuna funzionalità di commutazione in quel caso e servirà solo come una casella per visualizzare i nomi delle variabili.