11

嗨,我正在使用 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 ”并尝试修复我的代码,如您在上面看到的,但我不知道为什么会遇到这个问题。

还有另一篇文章如何说服 ggplot2 geom_text 在时间序列图中标记指定日期?其中谈到了类似的问题。我是否因为我也在使用 ggmap 而得到不同的结果?

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

贾巴巴

4

1 回答 1

12

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

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

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

我对hjust设置进行了修改以使标签可见。

于 2013-01-11T23:11:52.523 回答