我在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。似乎无论我为数据提供什么数据,轴总是以这种方式标记。
我的问题是:
谢谢您抽时间见我。
发布于 2012-02-04 16:40:02
axes = TRUE时,PlotOnStaticMap()调用的degAxis()函数提取axTicks()找到的漂亮刻度线的x和y图坐标。degAxis()期望这些坐标位于地图的坐标系中,但是rGoogleMaps将它们作为像素坐标返回,从中心原点计算得出。在绘图大小为640x640的情况下,漂亮的刻度线在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轴xrange <- MyMap$BBOX$ur2 - MyMap$BBOX$ll2 xticklength <- xrange / (length(axTicks( 1) ) -1) xticklabs <- seq(MyMap$BBOX$ll2,MyMap$BBOX$ur2,xticklength) xticklabs <- parse(text =粘贴(sprintf(‘%.2F’,abs(Xticklabs),ifelse(xticklabs < 0,‘*度*W’,‘*度*E’),sep=''))轴(1,at=axTicks( 1),xticklabs,cex.axis=0.8) #y轴yrange <- MyMap$BBOX$ur1 - MyMap$BBOX$ll1 yticklength <- yrange / (length(axTicks(2)) -1) yticklabs <- seq(MyMap$BBOX$ll1,MyMap$BBOX$ur1,yticklength) yticklabs <- parse)yticklabs<-parse(at=axTicks(‘%.2F’,abs(yticklabs)),ifelse(yticklabs < 0,‘*度*S’,‘*度*N’),sep=‘)轴(2,at=axTicks(2),yticklabs,cex.axis=0.8,las=1)
https://stackoverflow.com/questions/6258408
复制相似问题