相关疑难解决方法(0)

如何使用ggplot2在地图上添加经度和纬度?

我现在正在使用绘制加拿大地图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)

最终结果应该是这样的。 在此处输入图片说明

r spatial latitude-longitude ggplot2

4
推荐指数
1
解决办法
1625
查看次数

如何调整ggplot2中绘制轴的程度?

我对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)

我明白了:

qplot图形

如何调整绘制轴的范围?例如对于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)

更好的轴

plot r ggplot2

3
推荐指数
1
解决办法
615
查看次数

标签 统计

ggplot2 ×2

r ×2

latitude-longitude ×1

plot ×1

spatial ×1