Python Plotly - макет нескольких легенд YAXIS [дубликат]

Jan 18 2021

Я пытаюсь построить 2 наложенных графика на одном и том же рисунке, одну гистограмму и одну линейную тенденцию с помощью приведенного ниже кода:

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

В результате у меня есть что-то вроде приведенного выше, где обе легенды для левой оси и правой оси смешаны вместе.

Кто-нибудь знает, как я могу поставить каждый на свою сторону? Легенда для левой оси слева и легенда для правой оси справа? Заранее спасибо !

Ответы

DerekO Jan 18 2021 at 16:31

К сожалению, Plotly не поддерживает несколько легенд . Это открытый вопрос.

Вы можете скрыть элементы левой легенды из одной легенды, которая у вас есть сейчас, а затем использовать прямоугольное поле аннотаций с текстом имен переменных линейного тренда, чтобы построить левую легенду с нуля. Однако в этом случае легенда фактически не будет иметь никаких функций переключения и будет служить только в качестве поля для отображения имен переменных.