Если px
действительно дает вам желаемую диаграмму солнечных лучей, как это:
График 1:
Код 1:
# imports
import pandas as pd
import plotly.graph_objects as go
import plotly.express as px
# data
df = pd.DataFrame({'user': [23, 24, 25, 26, 27],
'age': [12, 13,15, 20, 21],
'gender': ['male','male', 'female','male', 'male'] })
# plotly express figure
fig = px.sunburst(df, path=["gender", "age"])
fig.show()
Затем, насколько мне известно, вам придется реструктурировать свои данные, чтобы использовать graph_objects
. В настоящее время ваши данные имеют форму
, а для graph_objects
потребуется label = ['12', '13', '15', '20', '21', 'female', 'male']
. И что теперь? Go через мучительную боль от нахождения правильной структуры данных для каждого элемента? Нет, просто создайте одну фигуру, используя px
, и "украдите" все элементы вашей фигуры оттуда и используйте ее в graph_objects
фигуре:
Код 2:
# imports
import pandas as pd
import plotly.graph_objects as go
import plotly.express as px
# data
df = pd.DataFrame({'user': [23, 24, 25, 26, 27],
'age': [12, 13,15, 20, 21],
'gender': ['male','male', 'female','male', 'male'] })
# plotly express figure
fig = px.sunburst(df, path=["gender", "age"])
# plotly graph_objects figure
fig2 =go.Figure(go.Sunburst(
labels=fig['data'][0]['labels'].tolist(),
parents=fig['data'][0]['parents'].tolist(),
)
)
fig2.show()
Участок 2:
Теперь, если Вы хотите, чтобы на этом же рисунке отображались некоторые дополнительные функции вашего набора данных, просто добавьте ids=fig['data'][0]['ids'].tolist()
к смеси:
Сюжет 3:
Полный код:
# imports
import pandas as pd
import plotly.graph_objects as go
import plotly.express as px
# data
df = pd.DataFrame({'user': [23, 24, 25, 26, 27],
'age': [12, 13,15, 20, 21],
'gender': ['male','male', 'female','male', 'male'] })
# plotly express figure
fig = px.sunburst(df, path=["gender", "age"])
# plotly graph_objects figure
fig2 =go.Figure(go.Sunburst(
labels=fig['data'][0]['labels'].tolist(),
parents=fig['data'][0]['parents'].tolist(),
values=fig['data'][0]['values'].tolist(),
ids=fig['data'][0]['ids'].tolist(),
domain={'x': [0.0, 1.0], 'y': [0.0, 1.0]}
))
fig2.show()