Комбинируйте легенды на карте, когда данные указаны в геометрии

Я использую ggplot2 для построения карты и точек поверх нее. Это состоит из построения карты и последующего использования geom_point() для размещения точек. Кроме того, эти точки различаются по размеру в зависимости от другой переменной. Когда я рисую это, получается несколько легенд.

ggplot(mapdata, aes(x=long, y=lat)) + 
geom_map(map=mapdata, aes(map_id=region),  fill="#ffffff", color="black", size=0.15) +
xlim(4, 15) + 
ylim(47, 55) +
geom_point(data = dat, aes(long, lat, size = feature, alpha = 0.2, colour = "#007f3f")) +
scale_colour_manual(values = "#007f3f") 

введите здесь описание изображения

Как объясняется в этом вопросе (а также вот этот) обычно это можно сделать используя одинаковые значения name и labels для обеих шкал, однако я не уверен, как это применить, когда данные не указываются в основном вызове ggplot (т.е. не в геометрии) и с размером в качестве легенды. Я пробовал много итераций этого:

ggplot(mapdata, aes(x=long, y=lat)) + 
  geom_map(map=mapdata, aes(map_id=region),  fill="#ffffff", color="black", size=0.15) +
  xlim(4, 15) + ylim(47, 55) +
  geom_point(data = dat, aes(long, lat, size = feature, alpha = 0.2, colour = "#007f3f")) +
  scale_color_manual(name = "feature", values = "#007f3f", labels=c("1.0", "1.5", "2.0", "2.5", "3.0")) +
  scale_size_manual(name = "feature", values = c(1.0, 1.5, 2.0, 2.5, 3.0), labels=c("1.0", "1.5", "2.0", "2.5", "3.0"))

Как я могу объединить легенды?


person G_T    schedule 22.06.2017    source источник


Ответы (1)


Вы получаете несколько легенд, потому что у вас есть несколько аргументов внутри aes. В вашем примере единственная эстетика, которая зависит от переменной, — это size, остальные (color и alpha) не нужно сопоставлять.

Этот:

ggplot(mapdata, aes(long, lat)) + 
    geom_map(map = mapdata, 
             aes(map_id = region),
             fill="#ffffff",
             color="black",
             size=0.15) +
    geom_point(data = dat, 
               aes(long, lat, size = feature), 
               alpha = 0.2, 
               colour = "#007f3f")+
    xlim(4, 15) + 
    ylim(47, 55)

Даст вам единую легенду, уже объединенную.

person GGamba    schedule 22.06.2017
comment
Ницца! Спасибо. - person G_T; 22.06.2017