2011-10-15 52 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 = 「白」)

希望你得到這一切想通出來了!