2015-02-25 4 views
0

У меня есть набор данных в R с тысячами геолокализованных наблюдений, и я должен нанести их на карту. Мне удалось построить отдельные точки, используя этот код:R: нарисовать точки на карте с интенсивностью цвета

originale<-read.table("file.txt", header=TRUE,sep=";") 
require(ggplot2) 
require(ggmap) 
map <- get_map(location = c(lon=13.781693, lat=45.623124), zoom = 14, maptype = "terrain",source = "google") 
p <- ggmap(map) 
p_punti <- p + geom_point(data=originale, aes(x=lon, y=lat),size=5) 
plot(p_punti) 

Теперь я хотел бы, чтобы построить их с помощью набора из 5-6 цветов на основе количества наблюдений, расположенных на этой точке. Как и тот, который я создал на CartoDB: http://i.stack.imgur.com/Be1DL.png

Карта, нанесенная с помощью CartoDB, действительно слишком приблизительна: мне нужно установить собственный диапазон для каждого цвета.

+1

[Вот что я придумал] (http://stackoverflow.com/a/17096661/980833) в ответ на подобный вопрос. –

+0

Ваш вопрос не дает достаточной информации для ответа. Если у вас уже есть столбец с подсчетами, вы можете просто использовать 'geom_point (data = originale, aes (x = lon, y = lat, color = counts))'. Вы можете контролировать цвета, используемые с 'scale_color_manual'. – Ista

+0

Прости, @ Иста, я пытаюсь быть более конкретным. Интересная часть набора данных сделана так: «широта долготы; 1 45,654 13,645; 2 44,876 12,987; 3 45,654 13,645. Как видите, несколько строк имеют одинаковые координаты, поэтому у меня нет счетчиков. Я думал, что у меня нет счетчиков для того, чтобы подмножество времени, которое я хочу, часть части данных. Но после ваших наблюдений я попробую так. –

ответ

0

Я нашел рабочее решение, учитывающее повторяемость для каждого наблюдения в новом кадре данных, а затем построил карту с использованием геом. Точки в сочетании с scale_colour_discrete и breaks.

ThanksJosh и Ista за ваши предложения!

Вот код:

require(plyr) 
df <-read.table("input.txt", header=TRUE,sep=";") 

##selection 
original <- df[(df$Year==2013),] # 

##count recurrence 
conteggi2 <- ddply(original, .(original$lon, original$lat), nrow) 
names(conteggi2) <- c("lon", "lat", "Freq") 

##sort 
conteggi2 <- conteggi2[with(conteggi2, order(Freq)), ] 

##Classification 
verdi <- conteggi2$Freq <= 5 
conteggi2$classe[verdi] <- "1-5" 
gialli <- conteggi2$Freq > 5 & conteggi2$Freq <= 20 
conteggi2$classe[gialli] <- "6-20" 
rossi <- conteggi2$Freq > 20 & conteggi2$Freq <= 50 
conteggi2$classe[rossi] <- "21-50" 
neri <- conteggi2$Freq > 50 & conteggi2$Freq <= 500 
conteggi2$classe[neri] <- "51-500" 

##plot map 
require(ggplot2) 
require(ggmap) 
library(reshape2) 
Trieste <- qmap(location = c(lon=13.781693, lat=45.623124), zoom = 13, 
       legend = "topleft", color="bw")#maptype = "terrain", 
Trieste1 <- Trieste + 
     geom_point(aes(x = lon, y = lat, colour = classe, 
         title='Year 2013'), 
         data = conteggi2) + 
     guides(size=FALSE) + #remove useless label 
     scale_colour_discrete(name="Legend Title", 
           breaks=c("1-5","6-20","21-50", "51-500")) 
plot(Trieste1)