Skip to main content
 首页 » 编程设计

python之Plotly 的 treemap 和 sunburst 显示错误的大小

2024年09月03日27lexus

我正在尝试使用 plotly 的 sunburst 和 treemap 来可视化数据。但是,我发现子节点与其父节点相比显示的大小不正确,即子节点的大小之和不包括父节点的大小:

import plotly.graph_objects as go 
 
fig =go.Figure(go.Treemap( 
    labels= ["i_1", "i_2", "c_a", "i_3", "c_b"], 
    parents= ["c_a", "c_a", "", "c_b", ""],  
    values= [3, 2, 5, 2, 2], 
)) 
 
fig.show() 

输出:

如您所见,在原始数据中,i_1 和 i_2 的总和为 5,等于其父 c_a 的 5。但是在图中,“c_a” block 并没有被 i_1 和 i_2 一起填充。 i_3 和 c_b 也是如此。即使鼠标悬停弹出窗口显示正确的值。

旭日形可视化也是如此:

import plotly.graph_objects as go 
 
fig =go.Figure(go.Sunburst( 
    labels= ["i_1", "i_2", "c_a", "i_3", "c_b"], 
    parents= ["c_a", "c_a", "", "c_b", ""],  
    values= [3, 2, 5, 2, 2], 
)) 
 
fig.show() 

同样,i_1 和 i_2 并没有涵盖 c_a 的整个范围。

设置是否强制 plotly 真实地表示父子大小的比例。老实说,当前的表示法不能用于我的目的。

请您参考如下方法:

是的,设置 branchvalues="total"。默认值为 "remainder",它将值添加到子项的总和中,如您在图中所见。您也可以保留该设置并将所有非叶节点的值设置为 0。