如何用R ggplot的geom_line可视化6个HOLC等级CSV分类数据
多CSV文件的HOLC等级统计与可视化方案
核心步骤建议
优先合并所有CSV并添加数据集标识,再统一统计各等级计数,这样后续可视化能一次性涵盖所有数据,效率更高。
1. 批量读取并合并CSV文件
用tidyverse工具包可以高效处理多文件,给每个数据集加上来源标识(比如文件名):
# 加载必备包 library(tidyverse) # 替换成你的CSV所在文件夹路径 csv_folder <- "你的CSV文件存放路径" # 获取所有CSV文件的路径 csv_paths <- list.files(path = csv_folder, pattern = "\\.csv$", full.names = TRUE) # 批量读取+合并,同时添加来源列(用文件名作为标识) combined_data <- map_dfr(csv_paths, function(file) { read_csv(file, col_names = "holc_grade") %>% mutate(dataset = str_remove(basename(file), "\\.csv")) })
2. 统计各等级(含NA)的出现次数
直接按数据集和等级分组计数,把NA转换成明确的字符方便可视化:
grade_stats <- combined_data %>% group_by(dataset, holc_grade) %>% summarise(count = n(), .groups = "drop") %>% # 将NA转为"NA"字符串,避免可视化时被忽略 mutate(holc_grade = case_when( is.na(holc_grade) ~ "NA", TRUE ~ holc_grade ))
3. ggplot可视化(推荐分组条形图)
之前用geom_line展示分类数据不合适,改用分组条形图清晰对比不同数据集的等级分布:
ggplot(grade_stats, aes(x = holc_grade, y = count, fill = dataset)) + geom_col(position = "dodge", width = 0.7) + # 分组并列条形 labs( title = "各数据集HOLC邻里等级分布", x = "HOLC等级", y = "普查街区组数量", fill = "数据集" ) + theme_minimal() + theme(plot.title = element_text(hjust = 0.5)) # 标题居中
可选:展示等级占比(而非绝对数量)
如果想对比各等级在数据集中的占比,调整统计和绘图:
grade_proportions <- combined_data %>% group_by(dataset) %>% mutate(total = n()) %>% group_by(dataset, holc_grade) %>% summarise(percentage = n()/total, .groups = "drop") %>% mutate(holc_grade = case_when( is.na(holc_grade) ~ "NA", TRUE ~ holc_grade )) ggplot(grade_proportions, aes(x = holc_grade, y = percentage, fill = dataset)) + geom_col(position = "dodge", width = 0.7) + scale_y_continuous(labels = scales::percent_format(accuracy = 1)) + # 转为百分比显示 labs( title = "各数据集HOLC邻里等级占比", x = "HOLC等级", y = "占比", fill = "数据集" ) + theme_minimal() + theme(plot.title = element_text(hjust = 0.5))
对你之前代码的说明
之前用geom_line处理分类数据(等级+数据集)不合适,而且没有做计数统计,相当于把每一条街区组数据都绘制了一遍,所以结果不符合预期。用上述分组计数+条形图的方式,能清晰展示所有数据集的等级分布。
内容的提问来源于stack exchange,提问作者Kimberly
相关产品推荐
相关产品推荐

