2016-12-14 2 views
0

У меня есть картаКак добавить базовую карту для разделения данных на уровне факторов?

library(maps)  
library(mapdata)  
map('worldHires', c('Ireland', 'UK'), xlim=c(-16,-5.5), ylim=c(51,56))  

И у меня есть некоторые данные отслеживания, что я могу участок в соответствии с определить из животного ID

lat <- c(-11.385668, -11.389855,-12.142785,-11.94954,-11.17716, -10.456175) 
lon <- c(53.543667, 53.561507, 52.687934, 52.855068, 52.803291, 52.858737) 
ID <- c("A","A","B","B","C","C") 
df = data.frame(lat, lon, ID);df 

op <- par(mfrow = c(1,3)) 
sapply(split(df[1:2], df$ID), plot) 

Я хотел бы быть в состоянии установить функцию так что исходная карта задается как базовый уровень для каждого из трех отдельных дорожек.

ответ

1

Ваш вопрос не очень ясен по вашему окончательному желаемому результату. Я обнаружил, что библиотека ggmap очень полезна для отображения проблем. Вот попытка дать некоторые рекомендации по вашей проблеме. Функция geom_path очень полезна для подключения ряда локаций. В этом примере я только подключил точки для ID == B, при необходимости нужно просто подключить оставшийся идентификатор.

#Sample Data 
lat <- c(-11.385668, -11.389855,-12.142785,-11.94954,-11.17716, -10.456175) 
lon <- c(53.543667, 53.561507, 52.687934, 52.855068, 52.803291, 52.858737) 
ID <- c("A","A","B","B","C","C") 
df = data.frame(lat, lon, ID) 

library(ggmap) 
library(RColorBrewer) 

#locate the center of the map 
center<-c(mean(range(df$lon)), mean(range(df$lat))) 
#in this case zoom is set by trial and error 
mymap<-qmap(location = center, zoom = 8, maptype= "terrain") 
mymap<-mymap + geom_point(aes(x=lon, y=lat, color=ID), data=df) 
mymap<-mymap + scale_size(range = c(2, 4)) + scale_color_brewer(palette = "Set1") 
mymap<-mymap + geom_path(aes(x=lon, y=lat), data=df) 

mymap<-mymap + facet_wrap(~ID, nrow =2) 
print(mymap) 

Вам может понадобиться, чтобы увидеть этот вопрос, чтобы получить ggplot2 и ggmap работать правильно: ggmap Error: GeomRasterAnn was built with an incompatible version of ggproto

+0

К сожалению, я должен был быть более четким. Идея состоит в том, чтобы создать панель с одной картой для каждого идентификатора животного, а не всех на одной карте. Я попробовал это, и по какой-то причине он работает на моем полном наборе данных, но не на примере, который я предоставил! 'mapFunc <- функция (данные) { map ('worldHires', c ('Ireland', 'UK'), xlim = c (-16, -5.5), ylim = c (51,56)) баллов (данные $ lon, данные $ lat, pch = 16, cex = 5, map.axes (cex.axis = 0.8), заголовок («Буревестники бури»), xlab = "longitude", ylab = "широта") } ' –

+0

@ Manassa, Ok получил его, я добавил функцию facet_wrap в создание сюжета, и он отделился. – Dave2e

Смежные вопросы