如何在R语言中绑定多列并生成筛选后排序的树形图
解决方案:在R中生成筛选后排序的树形图
嘿,欢迎来到Stack Overflow!很高兴帮你搞定这个可视化需求——咱们一步步把你的描述转化成可落地的R代码,核心步骤就是:筛选目标数据 → 聚合整理多列 → 生成排序后的树形图。
第一步:准备工具与数据筛选
首先得用dplyr处理数据过滤,用treemap包生成树形图(如果还没装这两个包,先跑install.packages(c("dplyr", "treemap")))。
假设你的数据集叫space_data,先筛选出符合条件的记录:
library(dplyr) library(treemap) # 筛选特定社区、出租且ADA合规的空间 filtered_data <- space_data %>% filter( neighborhood == "你的目标社区名称", # 替换成你要选的具体社区名字 Rent.vs.Own == "出租", # 确保和你数据里的取值完全一致,比如英文数据就写"Rent" ADA.Compliant == TRUE # 如果你的数据里是文本值(比如"是"),就改成ADA.Compliant == "是" )
第二步:整理多列并排序
因为你的数据有大量重复实例,咱们需要先按你关注的类别(比如Dominant.Discipline)聚合统计,同时按大小排序:
# 按Dominant.Discipline分组,统计每个类别的空间数量(如果有数值列比如空间面积,也可以换成sum(面积列)) aggregated_data <- filtered_data %>% group_by(Dominant.Discipline) %>% summarise(total_spaces = n()) %>% # 统计每个类别的空间实例数 arrange(desc(total_spaces)) # 按数量降序排序
如果你想把多列结合成树形图的嵌套层级(比如Dominant.Discipline下再细分其他类别),可以把分组改成多个列,比如:
# 多列层级的聚合示例 aggregated_data <- filtered_data %>% group_by(Dominant.Discipline, 你的第二个分类列名) %>% summarise(total_spaces = n()) %>% arrange(desc(total_spaces))
第三步:生成排序后的树形图
用treemap函数生成可视化,确保方块按咱们排序后的顺序展示:
treemap( aggregated_data, index = "Dominant.Discipline", # 如果是多列层级,就写成c("列1", "列2") vSize = "total_spaces", # 决定方块大小的数值(比如统计的空间数量) title = "【目标社区】出租且ADA合规空间分布", sort = -1, # 按vSize降序排列,和之前的排序保持一致 border.col = "white", # 方块之间加白色边框,更清晰 fontsize.title = 14, fontsize.labels = 10 )
小提醒
- 一定要确认数据里的列名和取值完全匹配(比如
ADA.Compliant是逻辑值还是文本,Rent.vs.Own的准确写法),不然筛选会返回空数据哦! - 如果需要更定制化的样式(比如配色),可以加
palette参数指定配色方案。
内容的提问来源于stack exchange,提问作者TheNabh
相关产品推荐
相关产品推荐

