如何在 R 中使用 geom_label_repel 在 ggmap 上标记点?
How to label point on ggmap using geom_label_repel in R?
我有一个包含 5 个酒店名称及其各自位置的数据框。我 ggmap
使用以下代码在地图上绘制我的酒店。然而,当我试图在地块上显示我的酒店名称时,我 运行 遇到了问题。最初,我想,我应该把酒店名称放在图例中,'points/dots" 的颜色应该与酒店名称相对应。我的问题是我无法获得相同尺寸的 'points/dots'。经过研究我找到了将酒店名称直接绘制到地图上的更好方法。这是我遇到 Plot created by Tung 的地方。但是,每当我 运行 下面的代码时,它都会给我一个错误。
我的数据集如下:
structure(list(hotel_name = structure(c(1L, 5L, 2L, 4L, 3L), .Names = c("h1_Loc",
"h2_Loc", "h3_Loc", "h4_Loc", "h5_Loc"), .Label = c("Grand Hyatt San Diego",
"Grand Hyatt San Francisco", "Hyatt Regency Orange County", "Hyatt Regency Sacramento",
"Hyatt Regency San Francisco"), class = "factor"), longi = c(-117.168713,
-122.395447, -122.407291, -121.490768, -117.916417), lati = c(32.709745,
37.794589, 37.789216, 38.577627, 33.789322)), .Names = c("hotel_name",
"longi", "lati"), row.names = c("h1_Loc", "h2_Loc", "h3_Loc",
"h4_Loc", "h5_Loc"), class = "data.frame")
> ggmap(get_map(location = 'California', zoom = 6, maptype = "roadmap"))+ggplot(d1, aes(x= d1$longi, y = d1$lati)) +geom_point(color = "blue", size = 3)
代码我试图在地图而不是图例上获取我的酒店名称:
ggmap(get_map(location = 'California', zoom = 6, maptype = "roadmap"))+ggplot(d1, aes(x= d1$longi, y = d1$lati)) +geom_point(color = "blue", size = 3)
+ geom_label_repel(
aes(d1$longi, d1$lati, label =d1$hotel_name),
box.padding = 0.35, point.padding = 0.5,
segment.color = 'grey50') +
theme_classic(base_size = 12)
我在 运行 上面的代码之后得到错误:
Map from URL : http://maps.googleapis.com/maps/api/staticmap?center=California&zoom=6&size=640x640&scale=2&maptype=roadmap&language=en-EN&sensor=false
Information from URL : http://maps.googleapis.com/maps/api/geocode/json?address=California&sensor=false
Error: Don't know how to add o to a plot
在此先感谢您的帮助和努力。作为 R 的新手,如果您能提供代码并进行解释,我们将不胜感激。
提前致谢,
非常简单的解决方案:ggmap
创建了一个 ggplot
对象,所以你对 ggmap(...) + ggplot(...)
的理解实际上是将 2 个 ggplot
加在一起,这并不工作。这就是错误的来源。
您的数据帧中的数据将成为您调用 geom_point
的 data
参数。
改为
ggmap(get_map(location = 'California', zoom = 6, maptype = "roadmap")) +
geom_point(aes(x = longi, y = lati), data = d1, color = "blue", size = 3)
然后将 geom_point
图层添加到 ggmap
创建的 ggplot
对象上。
此外,在 ggplot 中,您不想在 aes
参数中命名数据框——因此我将 x = d1$longi
更改为 x = longi
,对于 y 和您可能需要映射的任何其他美学。
我有一个包含 5 个酒店名称及其各自位置的数据框。我 ggmap
使用以下代码在地图上绘制我的酒店。然而,当我试图在地块上显示我的酒店名称时,我 运行 遇到了问题。最初,我想,我应该把酒店名称放在图例中,'points/dots" 的颜色应该与酒店名称相对应。我的问题是我无法获得相同尺寸的 'points/dots'。经过研究我找到了将酒店名称直接绘制到地图上的更好方法。这是我遇到 Plot created by Tung 的地方。但是,每当我 运行 下面的代码时,它都会给我一个错误。
我的数据集如下:
structure(list(hotel_name = structure(c(1L, 5L, 2L, 4L, 3L), .Names = c("h1_Loc",
"h2_Loc", "h3_Loc", "h4_Loc", "h5_Loc"), .Label = c("Grand Hyatt San Diego",
"Grand Hyatt San Francisco", "Hyatt Regency Orange County", "Hyatt Regency Sacramento",
"Hyatt Regency San Francisco"), class = "factor"), longi = c(-117.168713,
-122.395447, -122.407291, -121.490768, -117.916417), lati = c(32.709745,
37.794589, 37.789216, 38.577627, 33.789322)), .Names = c("hotel_name",
"longi", "lati"), row.names = c("h1_Loc", "h2_Loc", "h3_Loc",
"h4_Loc", "h5_Loc"), class = "data.frame")
> ggmap(get_map(location = 'California', zoom = 6, maptype = "roadmap"))+ggplot(d1, aes(x= d1$longi, y = d1$lati)) +geom_point(color = "blue", size = 3)
代码我试图在地图而不是图例上获取我的酒店名称:
ggmap(get_map(location = 'California', zoom = 6, maptype = "roadmap"))+ggplot(d1, aes(x= d1$longi, y = d1$lati)) +geom_point(color = "blue", size = 3)
+ geom_label_repel(
aes(d1$longi, d1$lati, label =d1$hotel_name),
box.padding = 0.35, point.padding = 0.5,
segment.color = 'grey50') +
theme_classic(base_size = 12)
我在 运行 上面的代码之后得到错误:
Map from URL : http://maps.googleapis.com/maps/api/staticmap?center=California&zoom=6&size=640x640&scale=2&maptype=roadmap&language=en-EN&sensor=false
Information from URL : http://maps.googleapis.com/maps/api/geocode/json?address=California&sensor=false
Error: Don't know how to add o to a plot
在此先感谢您的帮助和努力。作为 R 的新手,如果您能提供代码并进行解释,我们将不胜感激。 提前致谢,
非常简单的解决方案:ggmap
创建了一个 ggplot
对象,所以你对 ggmap(...) + ggplot(...)
的理解实际上是将 2 个 ggplot
加在一起,这并不工作。这就是错误的来源。
您的数据帧中的数据将成为您调用 geom_point
的 data
参数。
改为
ggmap(get_map(location = 'California', zoom = 6, maptype = "roadmap")) +
geom_point(aes(x = longi, y = lati), data = d1, color = "blue", size = 3)
然后将 geom_point
图层添加到 ggmap
创建的 ggplot
对象上。
此外,在 ggplot 中,您不想在 aes
参数中命名数据框——因此我将 x = d1$longi
更改为 x = longi
,对于 y 和您可能需要映射的任何其他美学。