使用ggmap和geom_point时,geom_text无法正常工作

时间:2013-01-11 22:55:51

标签: r plot ggplot2 ggmap

HI我正在使用ggmap和gg_point函数来显示河口的测量数据。

我使用的代码如下:

    library(ggmap)
al1 <- get_map(location = c(lon = -87.525, lat = 30.35), zoom = 12, maptype = 'terrain')

lon<- c(-87.604474,-87.55)
lat<- c(30.362563,30.35)
label <- c("A","B")
df<-data.frame(lon,lat,label)

p <- ggmap(al1)+geom_point(data=df,aes(x=lon,y=lat,shape=label,label=label),size=3)
p <- p + xlab("Longitude")+ylab("Latitude")
p <- p +geom_text(aes(label=label, size=3,vjust=0))
p <- p + labs(title="Monitoring stations ")
p

ggsave("plot.pdf")

在这里,当我使用geom_text时,我得到以下错误:“美学必须是长度为1,或与dataProblems:label相同的长度”。

我想将标签贴在情节中的点旁边。我想放置两个点和标签,并留有一些间距,以便更容易阅读。

我查看了这篇文章“ggplot legend issue w/ geom_point and geom_text”并尝试修改我的代码,如上所示,但我不知道为什么会遇到此问题。

还有另一篇帖子How can I persuade ggplot2 geom_text to label a specified date in a time series plot?讲述了类似的问题。我得到的结果不同,因为我也在使用ggmap吗?

请帮我解决这个问题。非常感谢。

Jdbaba

1 个答案:

答案 0 :(得分:10)

您的问题是您没有在geom_text中正确指定美学:

geom_text(data = df, aes(x = lon, y = lat, label = label), 
          size = 3, vjust = 0, hjust = -0.5)

您没有告诉geom_text使用数据框df中的变量。如果你不这样做,所有的美学都是从主要的呼唤中继承的。最后,在将美学设置为单个值时,您不会在aes()内部执行此操作,而是在外部执行此操作。

我使用hjust设置进​​行操作以使标签可见。