R中如何重构dataframe以绘制不同适宜性的滑雪场分地区面积柱状图
实现步骤
1. 数据结构重构
你需要将现有的长表结构转为宽表,同时按TA分组计算总面积,推荐使用tidyverse系列工具实现,逻辑更直观:
如果还没安装依赖包,先运行安装命令:
install.packages("tidyverse")
加载包并完成数据转换:
library(tidyverse) # 转换为目标结构的宽表 TA_area_wide <- TA_area %>% # 以ID、TA为固定列,将Suitability的取值转为新列,对应填充Area值 pivot_wider( id_cols = c(ID, TA), names_from = Suitability, values_from = Area ) %>% # 计算每个TA的两类面积总和,缺失值按0处理 mutate( Area = sum(c(`Limited Suitability`, Suitable), na.rm = TRUE), .by = c(ID, TA) )
运行后得到的TA_area_wide就是你需要的目标结构数据框。
2. 绘制柱状图
仅展示Suitable类别面积
可以直接从原始长表筛选数据绘图,无需提前转换结构:
ggplot( TA_area %>% filter(Suitability == "Suitable"), aes(x = TA, y = Area) ) + geom_col(fill = "#2E8B57") + labs(x = "TA区域", y = "适宜面积", title = "各TA滑雪场适宜建设面积")
同时展示两类面积
如果需要对比同一TA的两类适宜性面积,直接给geom_col添加分组填充参数即可:
# 并列柱状图 ggplot(TA_area, aes(x = TA, y = Area, fill = Suitability)) + geom_col(position = position_dodge(0.9)) + labs(x = "TA区域", y = "面积", title = "各TA滑雪场适宜性面积分布")
# 堆叠柱状图 ggplot(TA_area, aes(x = TA, y = Area, fill = Suitability)) + geom_col() + labs(x = "TA区域", y = "面积", title = "各TA滑雪场适宜性面积分布")
内容的提问来源于stack exchange,提问作者scumbagsurfer
相关产品推荐
相关产品推荐

