Решение на самом деле очень простое: просто перенесите соответствующие эстетические аргументы в 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()
, получит собственную легенду. Но если вы назовете легенды и дадите им одно и то же имя, они будут объединены в одну.