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

技术求助:如何使用R绘制州地图

嘿,我来帮你搞定用R绘制县界地图的事儿!结合你提到的ggplot2,我整理了一套清晰的步骤,直接就能上手:

使用R+ggplot2绘制县界地图指南

首先,咱们得先准备好几个核心工具包:sf(专门处理空间数据的神器)、ggplot2(绘图主力)、readr(读取CSV更高效)。先安装并加载它们:

# 第一次运行需要安装包
install.packages(c("sf", "ggplot2", "readr"))

# 加载包
library(sf)
library(ggplot2)
library(readr)

步骤1:读取你的CSV数据

先确认下你的CSV结构:得有县名称列(用来区分不同县的边界点)和经纬度列。比如大概是这样:

county_name, lon, lat
朝阳县, 116.3, 39.9
朝阳县, 116.4, 39.8
...
怀柔县, 117.1, 38.5

用read_csv读取你的数据:

# 替换成你自己的CSV文件路径
county_data <- read_csv("你的县界数据.csv")

步骤2:把散点转换成空间多边形

你的CSV里是每个县边界的零散经纬度点,得把同一个县的点组合成完整的多边形:

# 按县分组,把每组的经纬度点转成sf格式的多边形
county_polygons <- county_data %>%
  group_by(county_name) %>%
  summarize(geometry = st_sfc(st_polygon(list(cbind(lon, lat))))) %>%
  st_sf() # 转换成标准空间数据框

⚠️ 划重点:一定要确保每个县的经纬度点是按边界顺序排列的(顺时针或逆时针都可以),不然画出来的多边形会乱成一团!如果点的顺序不对,记得先在CSV里调整点的顺序。

步骤3:用ggplot2绘制地图

现在就可以直接用geom_sf绘制空间数据了,还能自定义样式:

ggplot() +
  # 绘制县界多边形,填充色按县区分,边界用白色突出
  geom_sf(data = county_polygons, aes(fill = county_name), color = "white", linewidth = 0.5) +
  # 去掉默认的灰色背景,换成清爽的风格
  theme_minimal() +
  # 自定义标题和图例名称
  labs(title = "XX州各县边界地图",
       fill = "县名称") +
  # 把图例移到底部(可选)
  theme(legend.position = "bottom",
        plot.title = element_text(hjust = 0.5))

额外优化小技巧

  • 如果想给地图加底图,可以安装ggspatial包,用annotation_map_tile函数添加在线底图
  • 要是你的经纬度用的不是WGS84(GPS常用坐标系),可以用st_transform(county_polygons, crs = 4326)转换成标准坐标系
  • 想突出某个县?可以单独给它设置颜色:
ggplot() +
  geom_sf(data = county_polygons, 
          aes(fill = ifelse(county_name == "你要突出的县", "重点县", "其他县")), 
          color = "white") +
  scale_fill_manual(values = c("重点县" = "#ff4d4d", "其他县" = "#cceeff")) +
  theme_minimal()

如果你的CSV结构特殊,或者遇到点顺序、坐标系的问题,随时补充细节我再帮你调整!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 11:12:39