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

基于德国邮政编码着色地图并添加联邦州边界的实现问题

问题原因分析

错误Error in col2rgb(col, alpha = TRUE) : ungültiger Farbname in 'bundesland'的核心原因是:tm_borders()的col参数要求传入颜色值(比如"black"、"#FF0000"),但你传入了字段名"bundesland",R会将其识别为颜色名称,而不存在名为bundesland的颜色,因此报错。

你真正的需求是叠加联邦州边界,而非用bundesland字段控制边界颜色,需要调整代码逻辑。

修正步骤及代码

1. 获取联邦州边界数据

你已经加载了spData包,可直接使用内置的德国联邦州边界数据集de_states;如果有自定义的联邦州shp文件,也可以用read_sf()读取。

# 加载spData内置的德国联邦州边界数据
de_states <- spData::de_states

2. 统一坐标系(可选但推荐)

确保邮编数据与联邦州数据的坐标系一致,避免绘图错位:

# 将联邦州数据转换为与邮编数据相同的坐标系
de_states <- st_transform(de_states, crs = st_crs(germany))

3. 绘制叠加边界的地图

通过tm_shape()分别加载邮编数据和联邦州数据,先画邮编填充层,再叠加联邦州边界层:

tm_shape(germany) +
  tm_fill(col = "plz_groups") +  # 邮编分组着色
  tm_shape(de_states) +          # 加载联邦州边界数据
  tm_borders(col = "black", lwd = 1.5)  # 设置边界颜色和宽度

自定义联邦州数据的情况

如果使用自己的联邦州shp文件,替换第一步为:

# 读取自定义联邦州shp文件
de_states <- read_sf("path/to/your/bundesland.shp")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 15:45:31