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

如何用ggplot2仅可视化特定地理区域且保留全局颜色梯度?

解决方法

核心是固定颜色映射的范围为全量数据的薪资区间,避免筛选后自动重新计算区间。具体操作步骤如下:

  • 第一步:从全量数据中提取Wage字段的最小值和最大值,作为颜色刻度的固定范围
  • 第二步:筛选出需要展示的目标区域数据
  • 第三步:绘制地图时,将色标函数的limits参数设置为第一步得到的全量数据范围

代码示例

假设你的空间数据框为prov_shp,薪资数据集为wage_data,关联字段为COD_PROV:

# 1. 计算全量数据的薪资区间(忽略NA值)
full_wage_range <- range(wage_data$Wage, na.rm = TRUE)

# 2. 筛选目标区域并关联空间数据
filtered_map_data <- wage_data %>%
  inner_join(prov_shp, by = "COD_PROV") %>%
  filter(COD_REG >= 13)

# 3. 绘制地图,固定颜色映射范围
ggplot(filtered_map_data) +
  geom_sf(aes(fill = Wage)) +
  scale_fill_gradient(
    low = "#e6f2ff", 
    high = "#cc0000",
    limits = full_wage_range, # 关键:绑定全量数据的薪资区间
    name = "薪资水平"
  ) +
  theme_void()

如果使用离散型色标(如scale_fill_binned),同样可以通过limits参数固定范围,确保筛选区域的颜色和全图保持一致。若数据中存在缺失值,记得在计算区间时保留na.rm = TRUE避免出错。

内容的提问来源于stack exchange,提问作者io_boh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 14:35:20