You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言中使用Plotly绘制Treemap时百分比显示异常求助

Plotly树形图(Treemap)百分比显示异常问题的原因与解决方案

核心错误总结

你的所有问题都源于两个关键操作失误:

  • 手动指定父节点的values值:Plotly Treemap中,父节点的大小会自动由其子节点的values总和计算得出,无需手动设置父节点的values。若强行设置,Plotly会将所有节点(包括父节点)的values总和作为百分比计算的分母,完全偏离预期逻辑。
  • 将values转为字符型:values参数必须是数值类型,转为字符后Plotly无法正确解析数值进行占比计算。

针对各问题的修正方案

问题1:总占比拆分为两个50%却显示25%

错误原因:你给根节点TOTAL设置了values=100,同时给两个子节点各设50,Plotly计算百分比时的分母是所有节点values的总和(100+50+50=200),因此50/200=25%。

修正代码:仅设置子节点的数值,根节点values设为NA(留空即可):

labels = c("TOTAL", "PARTE 1", "PARTE 2")
parents = c("", "TOTAL", "TOTAL")
values = c(NA, 50, 50) # 根节点由子节点自动求和,无需手动赋值

plot_ly(
  type="treemap",
  labels=labels,
  parents=parents,
  values=values,
  textinfo="label+value+percent parent",
  domain=list(column=0)
)

此时PARTE 1和PARTE 2的占比会正确显示为父节点的50%。

问题2:细分节点后百分比显示错误

错误原因:除了手动设置父节点values的问题,你还将values转为了字符型,导致Plotly无法正确计算数值占比。

修正代码:移除字符型转换,仅保留最底层子节点的数值,所有父节点设为NA:

labels = c("TOTAL", "PARTE 1", "PARTE 2", "PARTE 1-A", "PARTE 1-B", "PARTE 2-A")
parents = c("", "TOTAL", "TOTAL", "PARTE 1", "PARTE 1", "PARTE 2")
values = c(NA, NA, NA, 25, 25, 50) # 仅设置叶子节点的数值

plot_ly(
  type="treemap",
  labels=labels,
  parents=parents,
  values=values,
  textinfo="label+value+percent parent",
  domain=list(column=0)
)

此时:

  • PARTE 1-A占PARTE 1的比例为25/(25+25)=50%
  • PARTE 2-A占PARTE 2的比例为50/50=100%
    完全符合预期。

问题3:多种百分比显示数值不符

错误原因:同样是父节点values设置错误+字符型转换的问题,修正后即可正常显示各类百分比。

修正代码:

labels = c("TOTAL", "PARTE 1", "PARTE 2", "PARTE 1-A", "PARTE 1-B", "PARTE 2-A")
parents = c("", "TOTAL", "TOTAL", "PARTE 1", "PARTE 1", "PARTE 2")
values = c(NA, NA, NA, 25, 25, 50)

plot_ly(
  type="treemap",
  labels=labels,
  parents=parents,
  values=values,
  textinfo="label+value+percent parent+percent entry+percent root",
  domain=list(column=0)
)

此时:

  • PARTE 1-A占根节点TOTAL的比例为25/(25+25+50)=25%
  • PARTE 1-A占父节点PARTE 1的比例为50%
    所有百分比显示均符合预期。

关键规则总结

  • 仅设置最底层叶子节点的values:父节点(包括根节点)的大小由子节点自动求和,无需手动指定,否则会破坏百分比计算逻辑。
  • values必须为数值类型:不能转为字符型,否则Plotly无法解析数值进行计算。

内容的提问来源于stack exchange,提问作者Edgar Alarcón

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 01:40:07