首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RGoogleMaps轴

RGoogleMaps轴
EN

Stack Overflow用户
提问于 2011-06-07 05:46:51
回答 1查看 872关注 0票数 3

我在RGoogleMaps中找不到有关以下轴标签问题的任何文档:

代码语言:javascript
复制
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. 有人对此有解释吗?

  • 有没有人能建议一种方法来获得正确的轴标签(假设这些标签是“不正确的”,但也许我在某种程度上误解了这个图!)?

谢谢您抽时间见我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-04 16:40:02

  1. 正如@Andrie建议的那样,这似乎是一个错误。当为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坐标下执行类似的操作。
  2. 快速解决方法,继续处理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)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6258408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档