![](/img/trans.png)
[英]Plotly: Follow-up How to create sunburst subplot using graph_objects?
[英]Plotly: How to create sunburst subplot using graph_objects?
我的 dataframe 看起來像這樣:
user age gender
0 23 12 male
1 24 13 male
2 25 15 female
3 26 20 male
4 27 21 male
並使用
px.sunburst(df, path=["gender", "age"])
給了我正確的旭日形 plot ,其中性別位於餅圖的中間部分,並且對於每個性別,它都有相關的年齡。
我想使用 graph_objects 而不是 plotly express 來做到這一點,因為我希望兩個旭日形圖並排。
來自 df 我上面有我如何在 graph_objects 中使用它。 我不明白要為標簽、父母、身份證等添加什么值......
fig = go.Figure()
fig.add_trace(
go.Sunburst(
lables = df.age,
parents = df.gender,
domain=dict(column=0)
)
)
fig.show()
我已經閱讀了文檔,但是我無法理解它是如何工作的。 如果有人知道,請告訴我如何使用 graph_object 和上面的 df 創建旭日形 plot。
只需使用 px 構建一個圖形,然后從那里“竊取”所有圖形元素並在 graph_objects 圖形中使用它來獲得你需要的東西!
如果px
實際上確實為您提供了所需的旭日形圖,如下所示:
Plot 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()
Plot 2:
現在,如果您想在同一圖中顯示數據集的更多特征,只需將ids=fig['data'][0]['ids'].tolist()
添加到組合中:
Plot 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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.