2017-01-23 1 views
1

У меня есть кадр данных, как этотКак создать уникальные метки для нескольких строк в geom_text?

zip state users longitude latitude 
00501 NY 1000 -72.63708 40.92233 
00544 NY 1000 -72.63708 40.92233 
00601 PR 2000 -66.74947 18.1801 
00602 PR 2000 -67.18024 18.36329 

Я черчение числа пользователей ggmap и geom_point.

map<-get_map(location='united states', zoom=4, maptype = "terrain", 
     source='google',color='color') 
ggmap(map) + geom_point(
aes(x=longitude, y=latitude, show_guide = TRUE, colour=users), 
data=data, alpha=.5, na.rm = T) + 
scale_color_gradient(low="red", high="green") 

Участок выходит быть как этот enter image description here

Теперь я пытаюсь создать ярлыки для всех состояний с помощью geom_text.

map<-get_map(location='united states', zoom=4, maptype = "terrain", 
     source='google',color='color') 
ggmap(map) + geom_point(
aes(x=longitude, y=latitude, show_guide = TRUE, colour=users), 
data=data, alpha=.5, na.rm = T) + 
scale_color_gradient(low="red", high="green") + 
geom_text(aes(x = longitude, y = latitude, label = as.character(state)), 
data = data,inherit.aes = FALSE) 

Сюжет выглядит следующим образом. enter image description here

Этикетки создаются для каждой строки. Как создать уникальную метку для нескольких строк?

Редактировать: Один из способов сделать это - удалить повторяющиеся имена состояний из самих данных. Есть ли более эффективный способ?

ответ

2

Самым простым решением является агрегирование данных в новый dataframe первый:

agg.data <- aggregate(cbind(longitude,latitude) ~ state, data = data, mean) 

, а затем использовать агрегированные данные, чтобы включить текстовые метки:

ggmap(map) + 
    geom_point(data = data, 
      aes(x = longitude, y = latitude, show_guide = TRUE, colour=users), 
      alpha = 0.5, na.rm = T) + 
    scale_color_gradient(low = "red", high = "green") + 
    geom_text(data = agg.data, 
      aes(x = longitude, y = latitude, label = as.character(state))) 
Смежные вопросы