Python Plotly - Disposition de plusieurs légendes YAXIS [duplicate]

Jan 18 2021

J'essaie de créer 2 graphiques superposés sur la même figure, un graphique à barres et une tendance en ligne avec le code ci-dessous:

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'}}}

En conséquence, j'ai quelque chose comme ce qui précède où les deux légendes de l'axe gauche et de l'axe droit sont mélangées.

Est-ce que quelqu'un sait comment je peux mettre chacun sur son côté pertinent? Légende de l'axe de gauche à gauche et légende de l'axe de droite à droite? Merci d'avance !

Réponses

DerekO Jan 18 2021 at 16:31

Malheureusement, Plotly ne prend pas en charge plusieurs légendes . C'est une question ouverte.

Vous pouvez masquer les éléments de légende de gauche de la seule légende que vous avez maintenant, puis utiliser une zone d'annotations rectangulaire avec le texte des noms de variable de tendance de ligne pour créer la légende de gauche à partir de zéro. Cependant, la légende n'aura en fait aucune fonctionnalité de basculement dans ce cas et ne servira que de boîte pour afficher les noms de variables.