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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 21:30:05