【问题标题】:Plotly: Show hoverinfo in treemap only for child nodesPlotly:仅在树图中为子节点显示悬停信息
【发布时间】:2021-06-09 13:27:32
【问题描述】:
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')

上面的代码给出了以下输出-

可见,它正确显示了total_cases_per_100 的值USA 和所有其他子节点。但是对于父节点,它总结了它,这是错误的,因为total_cases_per_100是一个比率而不是一个总数。

我是否可以为除子节点以外的所有节点隐藏value hoverinfo?

如果这是不可能的,我也可以使用父节点的实际值,但我不确定如何用它替换生成的值。

【问题讨论】:

    标签: python plotly data-visualization treemap plotly-python


    【解决方案1】:

    您可以使用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
    

    【讨论】:

    • 能够以这种方式操作ids 开启了许多自定义选项,谢谢!我不认为有办法隐藏父节点上的那个小悬停箭头?
    • 无论如何我都找不到阻止悬停框出现的方法。但是我非常喜欢悬停焦点所在的视觉队列....
    • 它还会突出显示为其带来焦点的节点。但无论如何,我只是出于好奇而问。无论如何,我将其替换为其他值。
    猜你喜欢
    • 2022-01-02
    • 1970-01-01
    • 2015-08-07
    • 2016-07-12
    • 2020-12-10
    • 1970-01-01
    • 2013-08-08
    • 2020-08-30
    • 1970-01-01
    相关资源
    最近更新 更多