如何用Highcharter的data_to_hierarchical创建两级Treemap
解决Highcharter两级可钻取Treemap问题
你的问题出在没启用Treemap的钻取交互功能,默认情况下highcharter的Treemap不会自动开启点击展开子级的逻辑,再加上默认的层级样式设置,导致子级被隐藏,看起来像单级图。以下是修正后的可运行代码:
library(tidyverse) library(highcharter) set.seed(110) ex <- data.frame( Level1 = rep(paste0("Country", seq(1:5)), each = 5), Level2 = rep(paste0("Sector", seq(1:5)), 5), Percentage = runif(25, 0, 1) ) # 构建层级数据并生成可点击展开的Treemap ex %>% data_to_hierarchical(c(Level1, Level2), Percentage) %>% hchart(type = "treemap", plotOptions = list( treemap = list( allowDrillToNode = TRUE, # 核心:允许点击节点钻取到子级 levelIsConstant = FALSE, # 关闭层级样式强制统一,让子级按自身数值显示尺寸 dataLabels = list( enabled = TRUE, format = "{point.name}" ) ) ))
关键参数说明:
allowDrillToNode = TRUE:打开这个参数后,点击顶层的Country节点,就能展开对应的Sector子节点,实现两级交互。levelIsConstant = FALSE:默认该参数为TRUE,会强制所有层级用相同尺寸规则渲染,导致子级无法正常显示。关闭后子级会根据自身的Percentage值计算尺寸。dataLabels:确保每个节点显示名称,方便识别层级内容。
原代码问题根源:
你用data_to_hierarchical已经正确构建了两级层级结构,但Highcharts Treemap默认不开启钻取交互,且强制层级样式统一,导致子级被隐藏,看起来像是单级图。通过调整上述参数,就能正常展示两级可交互的Treemap。
内容的提问来源于stack exchange,提问作者anorlondo
相关产品推荐
相关产品推荐

