Python Plotly - Multiple YAXIS Legends Layout [duplicado]

Jan 18 2021

Estou tentando construir 2 gráficos sobrepostos na mesma figura, um gráfico de barras e uma tendência de linha com o código abaixo:

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

Como resultado, eu tenho algo como o acima, onde ambas as legendas para a yaxis esquerda e a yaxis direita são misturadas.

Alguém sabe como posso colocar cada um no seu lado relevante? Legenda para yaxis esquerdo à esquerda e legenda para yaxis direito à direita? Desde já, obrigado !

Respostas

DerekO Jan 18 2021 at 16:31

Infelizmente, Plotly não suporta múltiplas legendas . Este é um problema aberto.

Você pode ocultar os itens da legenda à esquerda daquela que você tem agora e, em seguida, usar uma caixa de anotações retangular com o texto dos nomes das variáveis ​​de tendência de linha para construir a legenda à esquerda do zero. No entanto, a legenda não terá nenhuma funcionalidade de alternância nesse caso e servirá apenas como uma caixa para exibir os nomes das variáveis.