Сюжет: Как отобразить легенды для диаграммы солнечных лучей?

Я пытаюсь отобразить легенды рядом с моим сюжетом о солнечных лучах.

Пример солнечных лучей:

df = px.data.tips()
fig = px.sunburst(df, path=['day', 'time'], values='total_bill')
fig.show()

введите описание изображения здесь

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

Я привык вручную редактировать легенды в matplotlib (https://stackoverflow.com/a/53324868/10226862), но я не могу найти способ сделать это сюжетно.

Я также пробовал добавлять аннотации, но при этом добавляются оси X и Y.


person Arthur Coimbra    schedule 23.07.2020    source источник
comment
Не могли бы вы рассказать нам, что вы хотите показать в качестве легенды?   -  person rpanai    schedule 24.07.2020
comment
Я хочу показать имя и ценность.   -  person Arthur Coimbra    schedule 24.07.2020
comment
Имя и значение каждого входа?   -  person rpanai    schedule 24.07.2020
comment
Да, как только я смогу это сделать, я верю, что смогу манипулировать им, чтобы отображать только те входные данные, которые мне интересны.   -  person Arthur Coimbra    schedule 24.07.2020
comment
Возможно, вы сможете сделать это на языке R ggsunburt. Я упомянул об этом здесь.   -  person r-beginners    schedule 24.07.2020
comment
@ArthurCoimbra Как вам понравилось любое предложение?   -  person vestland    schedule 28.07.2020
comment
@vestland Это сработало! Спасибо. Я работал над другим решением с диаграммой рассеяния за солнечными лучами, где я скрываю все элементы, кроме легенды. Я поделюсь им, когда закончу.   -  person Arthur Coimbra    schedule 28.07.2020


Ответы (1)


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

введите описание изображения здесь

Полный код:

import plotly.express as px

df = px.data.tips()
fig = px.sunburst(df, path=['day', 'time'], values='total_bill')
D = df['day'].unique()

colors=['#EF553B',
         '#636EFA',
         '#00CC96',
         '#AB63FA',
         '#FFA15A',
         '#19D3F3',
         '#FF6692',
         '#B6E880',
         '#FF97FF',
         '#FECB52']

for i, m in enumerate(D):
    fig.add_annotation(dict(font=dict(color=colors[i],size=14),
                                        x=0.8,
                                        y=1-(i/10),
                                        showarrow=False,
                                        text=D[i],
                                        textangle=0,
                                        xanchor='left',
                                        xref="paper",
                                        yref="paper"))

fig.update_layout(
    paper_bgcolor='rgba(0,0,0,0)',
    plot_bgcolor='rgba(0,0,0,0)'
)

fig.update_xaxes(tickfont=dict(color='rgba(0,0,0,0)'))
fig.update_yaxes(tickfont=dict(color='rgba(0,0,0,0)'))

fig.show()
person vestland    schedule 27.07.2020