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

R语言绘制德国地图出现空白区域问题排查求助

R语言绘制德国区域地图出现空白区域的问题排查

问题背景

使用R语言绘制德国区域地图时,地图上存在空白区域,但对应区域的业务数据是可用的。空白区域表现为地图上部分区域未填充颜色;合并前的业务数据文件为summery_table_GG_R.xlsx;使用的地理数据为gadm3.6版本的德国一级行政区空间数据,获取代码:

URL <- "https://biogeo.ucdavis.edu/data/gadm3.6/Rsp/gadm36_DEU_1_sp.rds"

数据处理及绘图代码如下:

# 数据处理
germany <- readRDS(url(URL))
germany <- fortify(germany)

# 绘图
df_Karte_ratio %>% 
  ggplot(aes(x = long, y = lat, 
             group = group, fill = ratio_fl_arzt
             ))+
  geom_polygon(col = "black") +
  coord_map()+
  facet_grid(~EP01_KJP02_BEIDE03_PSM_04_20)+
  labs(title = "Fälle-Arzt Verhältnis")+
  theme_map()+
  theme(
    legend.position  = "right",
    legend.title = element_blank())+
  scale_fill_continuous_sequential(palette = "BluYl")

可能的原因及排查方向

1. 区域标识符匹配错误

地理数据与业务数据的区域编码/名称不匹配是最常见的原因:

  • 查看gadm36_DEU_1_sp.rds的属性数据(sp对象的@data部分),其中的NAME_1列是德国各州的德语名称,检查业务数据中对应的区域名称是否完全一致(包括大小写、德语特殊字符,比如ä/ö/ü,以及拼写差异)。
  • 使用fortify()处理sp对象时,会丢失原有的属性信息(比如区域名称),如果合并数据时没有正确关联这些信息,会导致部分区域无法匹配到业务数据,绘图时显示空白。

2. 数据合并方式错误

检查df_Karte_ratio的生成过程:

  • 如果合并地理数据与业务数据时使用了inner_join,会只保留双方都匹配的区域,地理数据中未匹配到的区域会被丢弃,绘图时就会出现空白。应该使用left_join(以地理数据为基准)确保所有区域都被保留。
  • 查看df_Karte_ratio中ratio_fl_arzt列是否存在NA值,NA会导致对应区域无法填充颜色,显示空白。

3. fortify()导致的空间数据结构问题

fortify()是较旧的空间数据处理方法,容易破坏空间对象的属性关联,建议改用sf包处理空间数据:

install.packages("sf")
library(sf)
library(ggplot2)

# 读取sf格式的地理数据
germany_sf <- read_sf(url("https://biogeo.ucdavis.edu/data/gadm3.6/Rsp/gadm36_DEU_1_sp.rds"))
# 假设业务数据通过NAME_1列关联,合并时保留所有地理区域
df_Karte_ratio_sf <- merge(germany_sf, your_business_data, by = "NAME_1", all.x = TRUE)

# 用geom_sf绘图
ggplot(df_Karte_ratio_sf) +
  geom_sf(aes(fill = ratio_fl_arzt), color = "black") +
  facet_grid(~EP01_KJP02_BEIDE03_PSM_04_20) +
  labs(title = "Fälle-Arzt Verhältnis") +
  theme_map() +
  theme(legend.position = "right", legend.title = element_blank()) +
  scale_fill_continuous_sequential(palette = "BluYl")

4. 分面变量导致的子数据缺失

你使用了facet_grid(~EP01_KJP02_BEIDE03_PSM_04_20)进行分面绘图:

  • 检查每个分面对应的子数据,确认某个分面下是否存在区域的ratio_fl_arzt值缺失的情况,即使总数据中有该区域的数据,分面子数据缺失也会导致对应区域空白。

5. 绘图分组错误

ggplot中使用group = group来绘制多边形,如果df_Karte_ratio中的group列在合并后出现缺失或错误,会导致多边形无法正确拼接,出现空白区域。可以检查group列的完整性,或者改用sf包的geom_sf(无需手动指定group)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 18:35:14