我一直在使用不同数据集(MR + MRTag)的geom_point绘制两组位置数据。
MR
detect_date Latitude Longitude species
12/04/2016 11:08 -6.6524 71.3475 Manta Ray
12/04/2016 11:09 -6.6524 71.3475 Manta Ray
12/04/2016 11:10 -6.6524 71.3475 Manta Ray
16/04/2016 21:27 -6.6524 71.3475 Manta Ray
MRTag
species taggingdate deploy_lat deploy_lon
Manta Ray 3/24/2016 -5.4191 71.83855
Manta Ray 02/05/2013 -5.2568 71.65768333
Manta Ray 02/07/2013 -5.33448 71.9812
Manta Ray 02/08/2013 -5.3046 71.94231667
然后我使用下面的代码制作基本地图
library(ggmap)
MR_bbox <- make_bbox(lon = MR$Longitude, lat = MR$Latitude, f=1)
MR_map <- get_map(location = MR_bbox, source = "google", maptype = "satellite")
然后将Mr + MRTag的位置数据绘制到地图上
MR_plot <-
ggmap(MR_map) +
geom_point(data = MR, mapping = aes(x = Longitude, y = Latitude),
shape = 1, color = "white") +
geom_point(data = MRTag, mapping = aes(x = deploy_lon, y = deploy_lat),
shape = 25, fill = "#00FF00", color = "#00FF00") +
xlab("Longitude") +
ylab("Latitude")
这给了我这个情节
我想在地图中添加两个形状的图例,但我不确定最好的方法,到目前为止还没有方法
答案 0 :(得分:0)
解决方案实际上非常简单:只需将相关的美学论点移到aes()
即可。
MR_plot <- ggmap(MR_map) +
geom_point(data = MR, aes(x = Longitude, y = Latitude,
color = 'detect', shape = 'detect', fill = 'detect')) +
geom_point(data = MRTag, aes(x = deploy_lon, y = deploy_lat,
color = 'tag', shape = 'tag', fill = 'tag')) +
xlab("Longitude") +
ylab("Latitude") +
scale_color_manual(name = 'legend', values = c(detect = 'white', tag = '#00FF00')) +
scale_fill_manual(name = 'legend', values = c(detect = NA, tag = '#00FF00')) +
scale_shape_manual(name = 'legend', values = c(detect = 1, tag = 25))
实际上有点令人困惑:如果你在color=
之外使用aes()
,那么你设置这些点的实际颜色并且没有传说,因为它纯粹是一个审美选择。
如果您在color=
内使用fill=
(或shape=
或aes()
),那么您正在做的是定义另一个控制颜色的变量分数。例如,如果您想根据物种为这些点着色,那么aes()
就是:aes(x = Longitude, y = Latitude, color = species)
。这是一回事:除了通过传递单个字符串,您将该geom_point
中所有点的颜色变量设置为单个值。
然后,您必须使用scale_color_*
函数(以及相应的填充和形状函数)将这些颜色变量设置为您想要的特定颜色。默认情况下,aes()
中定义的每个比例都会获得它自己的图例。但如果你给这些图例命名并给它们命名,那么它们就会合并成一个。