3

我使用库(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")
4

1 回答 1

1

我以前做过。如果您对legend函数遇到的问题做了一个可重现的示例,我们可以讨论它。在那之前,这里有一个模糊的解释。

1. 使用 RColorBrewer 创建味觉。例如:

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

2. 以某种方式为您的每个点分配一种颜色。在我的例子中,我有一个WT列和一个容器向量,所以我通过对权重进行分箱来生成每个点的颜色,并将相应的条目my.pal作为该点的颜色。请注意,在此示例中,我的向量中的 bin 少于 9 个binz,因为我的味觉只有 9 种红色。

colorz <- My.Pal[cut(datas$WT, labels = FALSE)]

3. 在地图上绘制,传递颜色参数。

PlotOnStaticMap(MyMap, lat = datas$LAT, lon = datas$LON, col = colorz)

4. 最后,创建图例,并将其添加到地图中。

图例(“左下角”,图例 = 图例.txt,填充 = My.pal,标题 = “我是”,bg = “白色”)

希望大家都想明白了!

于 2011-10-17T19:34:53.950 回答