我有一个由5个酒店名称及其各自位置组成的数据框。我ggmap
使用下面的代码在地图上绘制我的酒店。但是,当我试图将我的酒店名称显示在Plot上时,我遇到了问题。最初,我想,我应该将酒店名称放在传说中,“点/点”的颜色应该与酒店名称相对应。我的问题是我无法获得相同大小的'点/点'。经过研究,我发现更好的方式将酒店名称直接绘制到地图上。这是我遇到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的新手,非常感谢。 提前谢谢,
答案 0 :(得分:1)
非常简单的解决方案:ggmap
会创建一个ggplot
对象,因此您对ggmap(...) + ggplot(...)
的所有内容实际上是将ggplot
加在一起,但这不起作用。这就是错误的来源。
您的数据框中的数据将是您data
电话的geom_point
参数。
将其更改为
ggmap(get_map(location = 'California', zoom = 6, maptype = "roadmap")) +
geom_point(aes(x = longi, y = lati), data = d1, color = "blue", size = 3)
这会将geom_point
图层添加到ggplot
创建的ggmap
对象上。
此外,在ggplot中,您不希望在aes
参数中命名数据框 - 因此我将x = d1$longi
更改为x = longi
的原因,以及y和任何其他你可能需要绘制的美学。