簡體   English   中英

Plotly:如何使用 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM