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

R语言中用Plotly绘制Treemap显示空白界面?求助排查解决

Plotly树状图空白问题排查与修复

问题场景

使用R的Plotly绘制treemap时,运行代码后绘图界面完全空白。数据集构建及可视化代码如下:

数据集代码

library(treemap)
library(plotly)
library(dplyr)
library(stringr)

var1 <- c("A", "B", "C", "D", "E")
var1<- sample(var1, 1000, replace=TRUE, prob=c(0.2, 0.2, 0.2, 0.2, 0.2))
var1<- as.factor(var1)

var2 <- c("abc", "bcd", "egf", "hiu", "lkj", "oiu", "piu", "xsr", "zze", "tre")
var2<- sample(var2, 1000, replace=TRUE, prob=c(0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1))
var2<- as.factor(var2)

my_data = data.frame(var1, var2)
my_data = data.frame(my_data %>% group_by(var1, var2) %>% summarise(counts = n()))

可视化代码

# visualization 1
(g4EMP1 <- plot_ly(
  data = my_data,
  type = "treemap",
  labels = ~var2 %>% stringr::str_wrap(width = 15),
  branchvalues = "total",
  values = ~counts,
  parents = ~var1)) 

# visualization 2
(g4EMP2 <- plot_ly(
  data = my_data,
  type = "treemap",
  labels = ~var2%>% stringr::str_wrap(width = 15),
  #values = ~size,
  parents = ~var1)) %>% 
  layout(uniformtext = list(minsize = 10))

错误原因

  1. 缺失顶层父节点数据:Plotly的treemap要求所有父节点必须在数据集中单独占据一行,且父节点的parents需设为空字符串(表示顶层节点)。当前数据仅包含子节点(var2)及其对应的父节点(var1),但没有var1自身的行,导致Plotly无法识别顶层结构。
  2. 缺失values参数:第二个可视化代码中注释掉了values参数,treemap必须通过该参数定义每个区块的大小,缺失会直接导致渲染失败。

修复方案

步骤1:补充顶层父节点数据

先计算每个var1的总counts,然后将父节点行与原数据合并:

# 计算父节点的总counts
parent_data <- my_data %>%
  group_by(var1) %>%
  summarise(counts = sum(counts), .groups = "drop") %>%
  rename(labels = var1) %>%
  mutate(parents = "")  # 顶层节点的parents为空字符串

# 处理子节点数据,匹配格式
child_data <- my_data %>%
  rename(labels = var2, parents = var1) %>%
  select(labels, parents, counts)

# 合并父节点和子节点数据
full_data <- bind_rows(parent_data, child_data)

步骤2:正确编写可视化代码

确保values参数存在,且使用完整的数据集:

# 修复后的visualization 1
(g4EMP1_fixed <- plot_ly(
  data = full_data,
  type = "treemap",
  labels = ~labels %>% stringr::str_wrap(width = 15),
  branchvalues = "total",
  values = ~counts,
  parents = ~parents
))

# 修复后的visualization 2
(g4EMP2_fixed <- plot_ly(
  data = full_data,
  type = "treemap",
  labels = ~labels %>% stringr::str_wrap(width = 15),
  values = ~counts,
  parents = ~parents
)) %>% 
  layout(uniformtext = list(minsize = 10))

说明

  • branchvalues = "total"表示父节点的大小等于所有子节点大小之和,符合当前数据的统计逻辑。
  • 合并后的full_data包含了顶层节点(A-E)和对应的子节点(abc、bcd等),Plotly可以正确识别层级结构并渲染树状图。

内容的提问来源于stack exchange,提问作者stats_noob

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 03:35:18