r - 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
应该type
在 data.frame 中设置。您只需要包含该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"))
地图
推荐阅读
- listview - FlexView 内的 ListView 未扩展以显示所有记录 Xamarin.Forms
- objective-c - 在核心数据中使用 performBackgroundTask 保存高频(100Hz)传感器数据会导致数据丢失并导致应用程序崩溃?
- typescript - 在 Angular6 中使用 Typescript 过滤 JSON(API)
- android - 刷新recyclerview时始终检查第一个检查项
- java - 如何计算字符串中字母文字的数量?
- perl - 使用已弃用的 perl 脚本运行 diogenes,如何为较新版本重写此代码?
- excel - 使用 VBA 代码的问题会引发“未定义用户定义类型”错误
- java - 堆空间问题——数列迭代循环
- php - 在文件中查找匹配项并删除行和下面的行
- ssl - Sails.js 中的 HTTPS 请求 - 获取“错误:错误:客户端网络套接字在建立安全 TLS 连接之前断开”