如何创建在geom_text多行独特的标签?(How to create unique labels

2019-09-29 20:02发布

我有这样一个数据帧

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")

情节出来是这样的

现在我试图创建使用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)

情节出来是这样的。

标签是为每一行创建。 如何创建多行唯一的标签?

编辑:要做到这一点的方法之一是从数据本身删除重复的状态名称。 有没有更有效的方法?

Answer 1:

最简单的方法是将数据先聚合成一个新的数据帧:

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)))


文章来源: How to create unique labels for multiple rows in geom_text?