2011-10-15 24 views
3

我使用库(RgoogleMaps)绘制地图上的测量位置(点)。有在不同位置有不同的设备,我顺利拿到每个设备单独着色点:RgoogleMaps的传说?

theplot <- PlotOnStaticMap(lat=sitecoord$lat, lon=sitecoord$lon, 
          cex=.7, pch=20, 
          col=sitecoord$equipmentType, 
          MyMap=Map, NEWMAP=FALSE) 

我如何添加一个传奇生成的地图,剧情,看看哪些设备是由蓝点,表示它通过红, 等等?


更新:

使用@Rguy的很好的建议。我设法让传说中为他人谋取利益,这里是我的测试代码(不,我不是在冰岛测量,只是用它作为例子):

library(RgoogleMaps) 
library(RColorBrewer) 

Equipment <- c("AA","AA","BB","CC") 
lat <- c(63.90,66.20,64.80,64.50) 
lon <- c(-22.40,-14.20,-18.60,-15.00) 
tblDataPoints <- data.frame(Equipment,lat,lon) 

My.Pal <- brewer.pal(3, "Reds") 
tblDataPoints$colorz <- My.Pal[tblDataPoints$Equipment] 

plot.new() 
bb <- qbbox(lat=range(tblDataPoints$lat), lon=range(tblDataPoints$lon)) 
m <- c(mean(tblDataPoints$lat), mean(tblDataPoints$lon)) 
zoom <- min(MaxZoom(latrange=bb$latR,lonrange=bb$lonR)) 
Map <- GetMap.bbox(bb$lonR, bb$latR, zoom=zoom, maptype="roadmap", NEWMAP=TRUE) 
tmp <- PlotOnStaticMap(lat=lat, lon=lon, cex=.7, pch=20, col=tblDataPoints$colorz, MyMap=Map, NEWMAP=FALSE) 

tblLgd <- unique(tblDataPoints[,c("Equipment","colorz")]) 
row.names(tblLgd) <- NULL 

legend("topright", legend = tblLgd$Equipment, fill = tblLgd$colorz, bg = "white") 
+0

你可以使用“图例”功能吗?看到帮助(传奇)。 – Spacedman

+0

是的,这可能是要走的方向,但是PlotOnStaticMap选择我无法弄清的颜色(我没有如此经验,它可能是微不足道的)的逻辑中有一些东西。 – Chris

+0

如果您将颜色预先分配给点并保留它们的记录,则可以将颜色与其对应的颜色相匹配。允许PlotOnStaticMap根据某个因素决定为每个点分配哪些颜色,并将信息分配给函数中某处的颜色。 – Rguy

回答

1

我做这个之前。如果您已经对legend函数提出了可重现的问题示例,那么我们可以讨论它。在此之前,这是一个模糊的解释。

1.使用RColorBrewer创建一个上颚。例如:

library(RColorBrewer) 
My.pal <- brewer.pal(9, "reds") 

2.分配每个点的颜色,以某种方式的。在我的情况中,我有一个WT列和一个bin的向量,所以我通过装箱权重生成每个点的颜色,并将my.pal中的cooresponding条目作为该点的颜色。请注意,在此示例中,我的binz矢量中的框数少于9个,因为我的上腭只有9个红色阴影。

colorz < - My.Pal [切口(DATAS $ WT,标签= FALSE)]

3.在地图上叠加,使颜色参数。

PlotOnStaticMap(MyMap中,LAT = DATAS $ LAT,LON = DATAS $ LON,COL = colorz)

4.最后,创造传奇,并把它添加到地图中。

传说( “BOTTOMLEFT”,传说= legend.txt,填写= My.pal, 标题= “I AM”,BG = “白”)

希望你得到这一切想通出来了!