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

如何在世界地图上叠加坐标点并修改xlim实现x轴翻转?

解决方案

问题分析

原代码存在两个核心问题:

  1. xlim参数语法错误,被错误放置在ggplot()函数的括号外部,导致不生效;
  2. 缺少地图背景图层的绘制逻辑。

修正后的完整代码

library(ggplot2)
library(readxl)
library(maps)

# 读取数据
setwd("Behavior Data/STATE_SPACE_MODEL_SCRIPT/")
data <- read_excel("234798 ssm.xlsx")

# 获取目标区域的地图数据(缩小范围提升绘图效率)
world_map <- map_data("world")
target_map <- subset(world_map, 
                     long >= -71.5 & long <= -69,
                     lat >= min(data$lat) - 0.5 & lat <= max(data$lat) + 0.5)

# 绘制地图+数据点,实现x轴翻转
plot <- ggplot() +
  # 绘制地图背景
  geom_polygon(data = target_map, 
               aes(x = long, y = lat, group = group),
               fill = "lightgray", color = "black") +
  # 叠加数据点
  geom_point(data = data, aes(x = lon, y = lat, color = b), size = 2) +
  # 设置x轴范围并实现翻转(coord_cartesian不会过滤范围外的点,仅缩放视图)
  coord_cartesian(xlim = c(-69.5, -71))

# 显示图形
print(plot)

关键说明

  • x轴翻转实现:将xlim的范围设置为从大到小(-69.5到-71),ggplot会自动翻转x轴的刻度顺序;若需要过滤掉范围外的点,可替换为scale_x_continuous(limits = c(-69.5, -71))。
  • 图层顺序:先绘制地图背景(geom_polygon),再叠加数据点(geom_point),确保点显示在地图上方。
  • 地图数据优化:通过subset筛选目标区域的地图数据,避免绘制全量世界地图导致的性能问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 16:42:30