簡體   English   中英

Plotly:僅在樹形圖中為子節點顯示 hoverinfo

[英]Plotly: Show hoverinfo in treemap only for child nodes

import pandas as pd
import plotly.express as px

df = pd.DataFrame({'world':['world']*4,
                   'continent':['SA','SA','NA','NA'],
                  'country':['Brazil','Uruguay','USA','Canada'],
                  'total_cases_per_100':[6,1,12,8]})

fig = px.treemap(df, path=['world','continent','country'],values='total_cases_per_100')
fig.update_traces(hovertemplate=None, hoverinfo='value')

上面的代碼給出了以下輸出 -

在此處輸入圖像描述

可見,它正確顯示了USA和所有其他子節點的total_cases_per_100的值。 但是對於父節點,它總結了它,這是錯誤的,因為total_cases_per_100是一個比率而不是總數。

無論如何我可以隱藏除子節點以外的所有節點的value hoverinfo 嗎?

如果這是不可能的,我也可以使用父節點的實際值,但我不確定如何用它替換生成的值。

您可以使用hover_data / customdata並覆蓋非葉節點的值。

import pandas as pd
import plotly.express as px


df = pd.DataFrame({'world':['world']*4,
                   'continent':['SA','SA','NA','NA'],
                  'country':['Brazil','Uruguay','USA','Canada'],
                  'total_cases_per_100':[6,1,12,8]})
leaves = df.select_dtypes("object").apply("/".join, axis=1).values


fig = px.treemap(df, path=['world','continent','country'],values='total_cases_per_100', hover_data=["total_cases_per_100"])
fig.update_traces(hovertemplate='%{customdata[0]}')
fig.data[0].customdata = [
    v if fig.data[0].ids[i]
    in leaves else [""]
    for i, v in enumerate(fig.data[0].customdata)
]
fig

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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