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
并覆盖 none 个叶节点的值。
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
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
并覆盖 none 个叶节点的值。
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