RGoogleMaps轴

| 我找不到有关RGoogleMaps中的轴标签的以下问题的任何文档:
library(RgoogleMaps)
datas <- structure(list(LAT = c(37.875, 37.925, 37.775, 37.875, 37.875), 
                   LON = c(-122.225, -122.225, -122.075, -122.075, -122.025)), 
                   .Names = c(\"LAT\", \"LON\"), class = \"data.frame\", 
                   row.names = c(1L, 2L, 3L, 4L, 5L))
# Get bounding box.
boxt <- qbbox(lat = datas$LAT, lon = datas$LON)
MyMap <- GetMap.bbox(boxt$lonR, boxt$latR, destfile = \"Arvin12Map.png\", 
maptype = \"mobile\")
PlotOnStaticMap(MyMap, lat = datas$LAT, lon = datas$LON, 
                axes = TRUE, mar = rep(4, 4))
当我在计算机上运行时,水平轴的范围为300W至60E,但是之间的刻度线不是线性间隔的(300W,200W,100W,0、100E,160W,60W)。 另外,垂直轴从300S线性移动到300N。看来,无论我为数据提供什么数据,轴总是以这种方式标记。 我的问题是: 1.使用此代码的其他计算机上是否会出现此问题? 2.有人对此有解释吗? 和 3.有人可以建议一种方法来获取正确的轴标签(假设它们是“不正确的”,但也许我在某种程度上误解了图!)? 感谢您的时间。     
已邀请:
         是 正如@Andrie所建议的,这似乎是一个错误。当为
axes = TRUE
时,由
PlotOnStaticMap()
调用的
degAxis()
函数将提取由
axTicks()
找到的漂亮刻度线的x和y图坐标。
degAxis()
期望这些坐标位于地图的坐标系中,但rGoogleMaps会将其作为像素坐标返回,该坐标是从中心原点算出的。绘图尺寸为640 x 640时,漂亮的刻度线分别在E-W和N-S方向上分配给-300,-200,-100、0,100、200、300。您最终得到300W,200W,100W,0、100E,160W,60W,因为由
degAxis()
调用的
degreeLabelsEW()
函数假定,在给定的经度必须落在[-180,180]内的情况下,实际上任何大于180的经度都在西半球(例如200E向西半球以东20度,即160W)。不知道为什么它在荒谬的N,S和W坐标下无法达到类似的效果。 一种快速的解决方法,继续您的
MyMap
对象:
PlotOnStaticMap(MyMap, lat = datas$LAT, lon = datas$LON, 
                axes = FALSE, mar = rep(4.5, 4))

# x-axis
xrange <- MyMap$BBOX$ur[2] - MyMap$BBOX$ll[2]
xticklength <- xrange / (length(axTicks(1)) - 1)
xticklabs <- seq(MyMap$BBOX$ll[2], MyMap$BBOX$ur[2], xticklength)
xticklabs <- parse(text = paste(sprintf(\'%.2f\', abs(xticklabs)), 
    ifelse(xticklabs < 0, \'*degree*W\', \'*degree*E\'), sep=\'\'))
axis(1, at=axTicks(1), xticklabs, cex.axis=0.8)

# y-axis
yrange <- MyMap$BBOX$ur[1] - MyMap$BBOX$ll[1]
yticklength <- yrange / (length(axTicks(2)) - 1)
yticklabs <- seq(MyMap$BBOX$ll[1], MyMap$BBOX$ur[1], yticklength)
yticklabs <- parse(text = paste(sprintf(\'%.2f\', abs(yticklabs)), 
    ifelse(yticklabs < 0, \'*degree*S\', \'*degree*N\'), sep=\'\'))
axis(2, at=axTicks(2), yticklabs, cex.axis=0.8, las=1)
    

要回复问题请先登录注册