2017-01-23 21 views
1

私はggmapとgeom_pointを使用しているユーザーの数をプロットしています。この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 

のようなデータフレームを持っています。

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を使用してすべての状態のラベルを作成しようとしているこの enter image description here

ようになり出てきます。

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

各行にラベルが作成されます。複数の行に一意のラベルを作成するにはどうすればよいですか?

編集:これを行うための1つの方法は、データ自体から重複した状態名を削除することです。より効率的な方法がありますか?

答えて

2

最も簡単な解決策は、最初に新しいデータフレームにデータを集約することである。その後、

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))) 
関連する問題