gpt4 book ai didi

r - 如何使用ggplot2在 map 上添加经度和纬度线?

转载 作者:行者123 更新时间:2023-12-05 00:55:14 30 4
gpt4 key购买 nike

我现在正在使用 ggplot2 绘制加拿大 map .因为默认的投影方式是“aea”(Albers Equal Area),所以 map 上的经纬度都是直线。我想知道如何在 map 上以“110W、100W、90W”和“50N、60N、70N”的形式显示经纬度。它们应该是曲线。非常感谢。

arcgis shapfile 下载自 https://www.arcgis.com/home/item.html?id=dcbcdf86939548af81efbd2d732336db
enter image description here

library(ggplot2)
library(rgdal)
countries<-readOGR("Canada.shp", layer="Canada")
ggplot()+geom_polygon(data=countries,aes(x=long,y=lat,group=group),fill='white',color = "black")

最后的结果应该是这样的。
enter image description here

最佳答案

您可以使用 coord_map 执行此操作ggplot 的参数 documented here

这使用投影来改变坐标网格。曲线将包括等距投影,但您应该查看 here获取所有允许的投影列表。您选择哪一个是一种偏好方式。

使用 azequidistant (我认为这是 Azimuthal equidistant projection ),并手动添加标签:

axis_labels <- rbind(
data.frame(long = rep(-140,5),lat = seq(40,80,10), labels = seq(40,80,10)), # x axis labels
data.frame(long = seq(-140,-60,40),lat = rep(85,3), labels = seq(140,60,-40)) # y axis labels
)

ggplot() +
geom_polygon(data=countries,aes(x=long,y=lat,group=group),fill='white',color = "black") +
coord_map("azequidistant") +
scale_x_continuous(breaks = seq(-140,60, by = 20))+
scale_y_continuous(breaks = seq(40,80, by = 10)) +
geom_text(data = axis_labels, aes(x = long, y = lat, label = labels)) +
theme_bw() +
theme(panel.grid.major = element_line(colour = "grey"),
panel.border = element_blank(),
axis.text = element_blank())

enter image description here

关于r - 如何使用ggplot2在 map 上添加经度和纬度线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38532070/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com