Легенда на RgoogleMaps? - PullRequest
       40

Легенда на RgoogleMaps?

3 голосов
/ 15 октября 2011

Я использую библиотеку (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")

1 Ответ

1 голос
/ 17 октября 2011

Я делал это раньше.Если вы сделали воспроизводимый пример проблемы, с которой вы столкнулись с функцией legend, мы могли бы обсудить ее.До тех пор вот смутное объяснение.

1.Создайте вкус, используя RColorBrewer.Например:

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

2.Назначьте каждому из ваших очков цвет, каким-то образом.В моем случае у меня был столбец WT и вектор бинов, и поэтому я генерировал цвета для каждой точки, разбивая веса и выбирая соответствующую запись в my.pal как цвет этой точки.Обратите внимание, что в этом примере в моем векторе binz меньше 9 корзин, так как в моем вкусе только 9 оттенков красного.

colorz <- My.Pal [cut (datas $ WT), label = FALSE)] </p>

3.Участок на карте, передавая цветовой аргумент.

PlotOnStaticMap (MyMap, lat = данные $ LAT, lon = данные $ LON, col = colorz)

4.Наконец, создайте легенду и добавьте ее на карту.

legend ("bottomleft", legend = legend.txt, fill = My.pal, title = "I AM", bg = "белый ")

Надеюсь, вы все выяснили!

...