ggmap + geom_point:根据输入创建可变数量的“geom_points”绘制地图

问题描述

我正在绘制地图。我有一个包含许多 (lat,lng) 坐标的数据集,每个坐标都分配给一种类型。示例:

df <- data.frame(type=c("a","a","b","c"),lat=c(47,46,48,48.5),lng=c(8,8.9,8.3,8.3))

>df
type lat  lng
a    47   8
a    46   8.9
b    48   8.3
c    48.5 8.3

我想做的是在区域地图上绘制点,为每个组提供不同的颜色。组的数量-“类型”可以根据输入数据而变化,并且通常很大。

因此“a”点将是绿色,例如“b”红色和“c”蓝色。

到目前为止我用来绘制小组的方法是“ggmap”:

x <- get_stamenmap(...)
ggmap(x) + geom_point(#for a) + + geom_point(#for b)+ geom_point(#for c)

如果你有 +1000 种类型,这当然是不可行的。

有没有简单的方法可以做到这一点?或者至少更容易? 也许是另一个包,或者使用“for-loops”?

我感谢任何建议或评论, 谢谢

解决方法

也许这可能会有所帮助。在 geom_point 美学中,您可以指定 color 应基于 data.frame 中的 type 进行设置。您只需包含一次 geom_point 语句。此外,如果您想为不同类型指定单独的颜色,您可以使用 scale_color_manual 并在那里定义它们。

library(ggmap)

set.seed(12345)

points <- data.frame(type = sample(LETTERS[1:4],10,replace = T),lon = rnorm(10,-95.4,0.1),lat = rnorm(10,29.7,0.1))

ggmap(get_stamenmap()) +
  geom_point(data = points,aes(lon,lat,color = type)) +
  scale_color_manual(values = c("A" = "blue","B" = "green","C" = "red","D" = "orange"))

地图

map with colored points