Facet Wrap未显示滞后值:需在2014分面展示2013对应颜色数据
解决方案
问题核心是你之前的做法混淆了分面用的年份和数据实际的年份——table2把year减1后,2014年的数据会被分到2013的分面里,而2014分面根本拿不到滞后数据。正确的思路是把分面分组和颜色映射的年份拆成两个字段,具体步骤如下:
步骤1:重构数据集
先创建一个包含分面年份(facet_year)和颜色年份(color_year)的数据集,让2013年的数据同时出现在2013和2014的分面中:
library(dplyr) library(sf) library(ggplot2) # 读取并筛选2013-2014年的数据 ERF_filtered <- ERF %>% select(year, geometry) %>% filter(year %in% c(2013, 2014)) # 重构数据:2013年数据要同时用于2013和2014分面,2014年数据只用于2014分面 plot_data <- bind_rows( # 2013年数据:分面年份设为2013和2014 ERF_filtered %>% filter(year == 2013) %>% mutate(facet_year = c(2013, 2014), color_year = year) %>% unnest(facet_year), # 2014年数据:分面年份仅设为2014 ERF_filtered %>% filter(year == 2014) %>% mutate(facet_year = 2014, color_year = year) ) %>% st_centroid() # 转换为 centroids
步骤2:绘图
用facet_year控制分面,color_year控制颜色,这样2014分面会同时显示2013(滞后)和2014年的数据,且颜色和2013分面的对应一致:
ggplot() + geom_sf(data = plot_data, aes(color = as.factor(color_year)), size = 0.5) + facet_wrap(~facet_year, ncol = 4) + theme_void() + labs(color = "Year") # 可选:调整图例标题
这样就能实现你要的效果:2013分面只显示当年数据,2014分面同时显示2013(滞后)和2014年的数据,且2013年数据的颜色和2013分面里的完全一致。
内容的提问来源于stack exchange,提问作者Amleto
相关产品推荐
相关产品推荐

