繁体   English   中英

在R地图中包含比例尺和坐标

[英]include scale and coordinates in R map

我正在使用以下代码在R中绘制地图:

library(maps)
library(mapdata)

map('worldHires',c('UK'),
    xlim=c(-10,-1),
    ylim=c(56,59.5))  
points(-5.65,56.7233,col=2,pch=18)

导致

在此输入图像描述

如何在地图上以及周围带有经纬度的方框中添加比例尺? 类似的东西:

在此输入图像描述

maps包还有一个函数map.axesmap.scales

library(maps)
library(mapdata)

map('worldHires',c('UK'), xlim=c(-10,-1),
    ylim=c(56,59.5))

points(-5.65,56.7233,col=2,pch=18)
map.axes()
map.scale()

给你

在此输入图像描述

编辑1

如果你看一下map.axes的代码,你会看到它只是调用axisbox 一种方法是手动完成并调整标签。

library(maps)
library(mapdata)

m <- map('worldHires',c('UK'), xlim=c(-10,-1),
         ylim=c(56,59.5), mar=c(4, 4, 4, 4))

points(-5.65,56.7233,col=2,pch=18)

xat <- pretty(m$range[1:2])
xlab <- paste0(xat, " E")

yat <- pretty(m$range[3:4])
ylab <- paste0(yat, " N")

box()
axis(1, at=xat, labels=xlab)
axis(2, las=TRUE, at=yat, labels=ylab)
axis(3, at=xat, labels=xlab)
axis(4, las=TRUE, at=yat, labels=ylab)
map.scale(y=59)

这将为您提供带有调整标签的同一张图片 在此输入图像描述

编辑2:

或者使用raster::degreeLabels*建议的raster::degreeLabels*函数。

library(maps)
library(mapdata)
library(raster)

m <- map('worldHires',c('UK'), xlim=c(-10,-1),
         ylim=c(56,59.5), mar=c(4, 4, 4, 4))

points(-5.65,56.7233,col=2,pch=18)

xat <- pretty(m$range[1:2])
xlab <- parse(text=degreeLabelsEW(xat))

yat <- pretty(m$range[3:4])
ylab <- parse(text=degreeLabelsNS(yat))


box()
axis(1, at=xat, labels=xlab)
axis(2, las=TRUE, at=yat, labels=ylab)
axis(3, at=xat, labels=xlab)
axis(4, las=TRUE, at=yat, labels=ylab)

map.scale(y=59)

在此输入图像描述

根据rengis答案:

library(maps)
library(mapdata)
library(GISTools)
library(raster)

map('worldHires',c('UK'), xlim=c(-10,-1), ylim=c(56,59.5))
points(-5.65,56.7233,col=2,pch=18)
maps::map.scale(-9.5,56.2)
axis(1, at = seq(-10,-2,2), parse(text=degreeLabelsEW(seq(-10,-2,2))))
axis(2, at = seq(56,59,1), parse(text=degreeLabelsNS(seq(56,59,1))))
north.arrow(-8.5, 59, 0.1, "N")
box()

在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM