2016-01-27 2 views
0

Я пытаюсь установить размер точек на основе значения параметра «клики» в моем случае, Идеально команда размера должна работать, но ее не работает для меня каким-то образом. Он бросает мне ошибку Ошибка: Несовместимо длины для набора эстетики: размер Вот мое усилие:Невозможно установить размер с помощью ggmap

library(ggmap) 
    library(ggplot2) 
    map <- get_googlemap(center = c(lon = -73.99, lat = 40.75), color = "bw", scale = 2,zoom=12) 
    x <- ggmap(map,extent = "device") +geom_point(aes(longitude.x, latitude.x,colour=factor(geo_region)), 
               data=data_ny, na.rm=T,size=3)+ scale_size_continuous(range =range(data_ny$clicks)) 
x 

DPUT является:

structure(list(geo_region = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "NY", class = "factor"), 
    io_id = c(262046L, 262045L, 262048L, 262046L, 262048L, 262048L, 
    262045L, 262046L, 262046L, 262048L, 262048L, 262046L, 262046L, 
    262048L, 262048L, 262046L, 262046L, 262048L, 262046L, 262048L, 
    262045L, 262046L, 262048L, 262045L, 262048L, 262045L, 262046L, 
    262048L, 262045L, 262046L, 262045L, 262048L, 262046L, 262048L, 
    262045L, 262046L, 262048L, 262045L, 262046L, 262046L, 262045L, 
    262048L, 262046L, 262045L, 262048L, 262045L, 262048L, 262046L, 
    262046L, 262048L), city.x = c("new york", "new york", "new york", 
    "new york", "new york", "new york", "new york", "new york", 
    "new york", "new york", "new york", "new york", "new york", 
    "new york", "new york", "new york", "new york", "new york", 
    "new york", "new york", "new york", "new york", "new york", 
    "new york", "new york", "new york", "new york", "new york", 
    "new york", "new york", "new york", "new york", "new york", 
    "new york", "new york", "new york", "new york", "new york", 
    "new york", "new york", "new york", "new york", "new york", 
    "new york", "new york", "new york", "new york", "new york", 
    "new york", "new york"), latitude.x = c(40.75, 40.75, 40.75, 
    40.72, 40.72, 40.73, 40.73, 40.73, 40.7, 40.7, 40.71, 40.71, 
    40.71, 40.71, 40.71, 40.71, 40.71, 40.71, 40.72, 40.72, 40.72, 
    40.74, 40.74, 40.74, 40.74, 40.74, 40.74, 40.72, 40.72, 40.72, 
    40.72, 40.72, 40.72, 40.73, 40.73, 40.73, 40.75, 40.75, 40.75, 
    40.75, 40.75, 40.75, 40.76, 40.76, 40.76, 40.76, 40.76, 40.76, 
    40.76, 40.76), longitude.x = c(-73.99, -73.99, -73.99, -73.99, 
    -73.99, -73.99, -73.99, -73.99, -74.01, -74.01, -74.01, -74.01, 
    -74.01, -74.01, -74.01, -74.01, -74.01, -74.01, -73.98, -73.98, 
    -73.98, -73.99, -73.99, -73.99, -74, -74, -74, -74, -74, 
    -74, -74, -74, -74, -74.01, -74.01, -74.01, -73.98, -73.98, 
    -73.98, -73.97, -73.97, -73.97, -73.99, -73.99, -73.99, -73.99, 
    -73.99, -73.99, -73.98, -73.98), clicks = c(30L, 0L, 9L, 
    12L, 3L, 15L, 0L, 30L, 3L, 4L, 4L, 22L, 2L, 0L, 4L, 3L, 0L, 
    0L, 15L, 14L, 0L, 10L, 3L, 0L, 24L, 0L, 44L, 9L, 0L, 11L, 
    0L, 11L, 11L, 8L, 0L, 11L, 20L, 0L, 49L, 24L, 0L, 12L, 13L, 
    0L, 15L, 0L, 14L, 30L, 4L, 4L)), .Names = c("geo_region", 
"io_id", "city.x", "latitude.x", "longitude.x", "clicks"), row.names = c(NA, 
50L), class = "data.frame") 

Это пример вывода я получу, если я исправить размер = 4 enter image description here

Но я хочу, чтобы размер был динамическим на основе кликов. В идеале size = data_ny $ clicks должен работать, но его нет, может кто-нибудь помочь мне исправить эту тривиальную проблему.

+0

я предполагаю data_ny $ клики с блестящими? чтобы заставить его работать, вам нужно будет использовать aes_string() – MLavoie

+0

Я все еще не уверен, как это заменить, так что в основном вы говорите, что заменяет aes() на aes_string()? – PSraj

+0

вот пример http://stackoverflow.com/questions/28483389/r-shiny-error-object-input-not-found/28483695#28483695 – MLavoie

ответ

3

Вы имели ошибки в именах, и я подумал, что добавление альфа (прозрачность) спецификация поможет решить проблемы почти смежных перекрывающихся точек с разным количеством кликов:

x <- ggmap(map,extent = "device") + 
    geom_point(data=data_ny, aes(x=longitude.x, y=latitude.x), 
       color="blue", alpha=0.3,  
       size=na.omit(data_ny$clicks), na.rm=TRUE) + 
     scale_size_continuous(range =range(data_ny$clicks)) 
png(); print(x); dev.off() 

enter image description here

+0

Спасибо за это, это работает, еще один вопрос, можем ли мы изменить цвета а также на основе let say "city.x" столбец? этот набор данных имеет только одно значение, но весь набор данных будет иметь больше значений. – PSraj

+0

Я не понимаю, почему нет. Я тестировал, назначая «цвет» этой новой переменной: 'data_ny $ Up.v.Down <- as.numeric (factor (data_ny $ latitude.x> mean (data_ny $ latitude.x)))' –

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