Ошибка: эстетика должна быть либо длиной 1, либо такой же, как data (4).

Я работаю с ggmap. цель состоит в том, чтобы нанести на карту точки с координатами и пометить эти точки своими именами. У меня есть фрейм данных с именем, долготой и широтой.

Данные выглядят так:

df <- structure(list(Station.Area = c("Balbriggan", "Blanchardstown", 
"Dolphins Barn", "Donnybrook", "Dun Laoghaire", "Finglas"), Latitude = c(53.608319, 
53.386813, 53.333532, 53.319259, 53.294396, 53.390325), Longitude = c(-6.18208, 
-6.377197, -6.29146, -6.232017, -6.133867, -6.298401)), .Names =c("Station.Area","Latitude", "Longitude"), row.names = c(NA, 6L), class = "data.frame")

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

library(ggmap)
library(ggplot2)

dub_map <- get_map(location = "Dublin", zoom = "auto", scale="auto", crop = TRUE, maptype = "hybrid")

ggmap(dub_map) +`
    geom_point(data = df, aes(x = Longitude, y = Latitude, 
              fill = "green", alpha =` `0.8, size = 5, shape = 21)) +`
guides(fill=FALSE, alpha=FALSE, size=FALSE)+
geom_text(label=df$Station.Area)+
scale_shape_identity()

Но я получаю

Ошибка: эстетика должна быть либо длиной 1, либо такой же, как data (4): label.

Я попытался добавить различную эстетику в geom_text, например размер, цвет, x и Y, но все равно выдает ту же ошибку.

Правильно ли я делаю это для своей цели? Пожалуйста помоги.

Получив это без geom_text, я просто хочу пометить точки

введите здесь описание изображения


person Sharvil Raval    schedule 12.06.2016    source источник
comment
Интересно, хотите ли вы geom_text(aes(label=Station.Area)). Также не делайте размер, альфа и т. Д., Как это в aes - делайте это снаружи   -  person user20650    schedule 12.06.2016
comment
да, я хочу использовать то же самое, но когда я запускаю код без df $, он не распознает столбец.   -  person Sharvil Raval    schedule 12.06.2016
comment
ладно, можешь поделиться некоторыми своими данными ?? Если да, можете ли вы отредактировать свой вопрос с результатами dput(head(df))   -  person user20650    schedule 12.06.2016
comment
Станция Район Широта Долгота Balbriggan 53.608319 -6,18208 Бланчардстаун 53,386813 -6,377197 дельфины Barn 53,333532 -6,29146 Donnybrook 53,319259 -6,232017 Dun Лири 53,294396 -6,133867 Finglas 53,390325 -6,298401 Килбаррак 53,383747 -6,15254 North Strand 53,358192 -6,240886 Филсборо 53,359906 -6,2724 Ратфарнем 53,300498 -6,283854 шхеры 53,580552 - 6.107878 Мечи 53.455747 -6.219741 Таллахт 53.288804 -6.355706 ул. Тара 53.3473 -6.2549   -  person Sharvil Raval    schedule 12.06.2016
comment
Извините, данные были в Excel, я только что скопировал и вставил. Обычно есть три столбца «Площадь станции», «Широта» и «Долгота». Так что, если вы можете, пожалуйста, прочтите это так   -  person Sharvil Raval    schedule 12.06.2016
comment
Кстати, я не понял, можете ли вы отредактировать свой вопрос с результатами dput (head (df)).   -  person Sharvil Raval    schedule 12.06.2016
comment
под редактированием я имею в виду, что вы нажимаете кнопку редактирования в левом нижнем углу своего вопроса и вставляете результаты dput(head(df)) (которые вы вводите в свой сеанс R)   -  person user20650    schedule 12.06.2016
comment
это сработало !!! Благодарность!!!   -  person Sharvil Raval    schedule 12.06.2016
comment
На самом деле, это может быть лучше ... ggmap(dub_map, base_layer = ggplot(data=df, aes(x = Longitude, y = Latitude, label=Station.Area))) + geom_point(fill = "green", alpha =0.8, size = 5, shape = 21) + guides(fill=FALSE, alpha=FALSE, size=FALSE) + geom_text() + scale_shape_identity() для экономии передачи данных в каждый geom   -  person user20650    schedule 12.06.2016
comment
идеально!! еще раз спасибо!!   -  person Sharvil Raval    schedule 12.06.2016


Ответы (1)


В вашем коде есть кое-что не совсем правильное.

Для geom_point вам нужны только x и y в вашем aes. Остальные аргументы должны быть снаружи, давая

geom_point(data = df, aes(x = Longitude, y = Latitude), 
                  fill = "green", alpha =0.8, size = 5, shape = 21)

Также label для geom_text должен быть внутри aes. Однако, поскольку на более высоком уровне нет data, x или y, тогда geom_text не найдет переменную метки или позиции, где разместить метки. Поэтому вам также необходимо включить их в вызов

geom_text(data=df, aes(x = Longitude, y = Latitude, label=Station.Area))

Однако вы можете опустить некоторые из этих повторений, используя аргумент base_layer ggmap:

ggmap(dub_map, 
      base_layer = ggplot(data=df, aes(x = Longitude, 
                                       y = Latitude, 
                                       label=Station.Area))) +
      geom_point(fill = "green", alpha =0.8, size = 5, shape = 21) +
      geom_text() 
person user20650    schedule 12.06.2016