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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:30:16