我现在正在使用绘制加拿大地图ggplot2。因为默认的投影方法是“ aea”(阿尔伯斯等面积),所以经度和纬度是地图上的直线。我想知道如何在地图上以“ 110W,100W,90W”和“ 50N,60N,70N”的形式显示经度和纬度。它们应该是曲线。非常感谢。
可从https://www.arcgis.com/home/item.html?id=dcbcdf86939548af81efbd2d732336db下载arcgis shapfile

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")
Run Code Online (Sandbox Code Playgroud)
我对ggplot2比较陌生,多年来在R中使用了基本图形.我一直喜欢基本图形的一件事是轴上的额外填充,因此两个轴不会在原点接触.以下是基本图形中的一个简单示例:
png(file="base.png")
plot(x,y, bty="n")
dev.off()
Run Code Online (Sandbox Code Playgroud)
这使得:

当我在ggplot2中做类似的事情的时候
require(ggplot2)
x <- y <- 1:10
png(file="qplot.png")
qplot(x, y) + theme_classic()
dev.off()
Run Code Online (Sandbox Code Playgroud)
我明白了:

如何调整绘制轴的范围?例如对于y轴,我宁愿它停在10.0,而不是继续到10.5左右?
更新:感谢您的评论.我现在有我想要的东西; 这里是一个片段,它只将轴拉出到每个轴上的最小/最大刻度.
o = qplot(x, y) + theme_classic() +
theme(axis.line=element_blank())
oo = ggplot_build(o)
xrange = range(oo$panel$ranges[[1]]$x.major_source)
yrange = range(oo$panel$ranges[[1]]$y.major_source)
o = o + geom_segment(aes(x=xrange[1], xend=xrange[2], y=-Inf, yend=-Inf)) +
geom_segment(aes(y=yrange[1], yend=yrange[2], x=-Inf, xend=-Inf))
plot(o)
Run Code Online (Sandbox Code Playgroud)
