如何基于名称计数使用R语言创建Treemap?
解决方法
你的代码有两个核心问题:一是ggplot()的括号未闭合,二是geom_treemap()的area参数需要连续型的计数值,而非直接传入因子变量。以下是修正后的完整实现:
步骤1:统计各名称的出现次数
首先需要对names向量做计数统计,得到每个名称对应的出现次数:
library(dplyr) library(ggplot2) library(treemapify) # 注意:geom_treemap来自treemapify包,需先安装加载 names <- c("A", "B", "B", "C", "D", "A", "A", "A", "A", "G", "B", "F", "F", "H") # 统计计数并整理成数据框 name_counts <- names %>% as.data.frame() %>% rename(name = ".") %>% count(name)
步骤2:绘制树形图
用统计好的计数值作为area参数,填充色对应名称,还可添加标签显示名称和计数:
ggplot(name_counts, aes(area = n, fill = name, label = paste(name, n, sep = ": "))) + geom_treemap() + geom_treemap_text(colour = "white", place = "centre", size = 12) + labs(title = "名称计数树形图") + theme(plot.title = element_text(hjust = 0.5))
关键说明
- 必须先安装并加载
treemapify包,geom_treemap是该包提供的函数,并非ggplot2原生功能 area参数必须传入数值型变量(这里的n即每个名称的出现次数),不能直接使用因子geom_treemap_text用于在区块内添加标签,方便直观查看对应名称和计数
内容的提问来源于stack exchange,提问作者adam
相关产品推荐
相关产品推荐

