Положите две легенды в два ряда - PullRequest
0 голосов
/ 14 ноября 2018

Следующие

data(iris)
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width)) +
  geom_point(aes(shape = Species, colour = Petal.Width)) + 
  theme(legend.position = 'bottom')

помещают две легенды Petal.Width и Species в нижнюю часть рядом друг с другом.

Могу ли я также расположить их друг на друге следующим образом?

Example

Я знаю, что это возможно с cowplot, но есть ли другой способ?

1 Ответ

0 голосов
/ 14 ноября 2018

Это можно сделать, настроив legend.box внутри theme(), например

ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width)) +
    geom_point(aes(shape = Species, colour = Petal.Width)) + 
    theme(
        legend.justification = 'left', 
        legend.position = 'bottom', legend.box = 'vertical', 
        legend.box.just = 'left')

enter image description here

Редактировать

Существует ряд параметров, которые можно передать в theme() для точной настройки расстояния и полей между легендами и между сюжетом и легендами, например (копирование из ?theme)

  • legend.margin контролирует поле вокруг каждой легенды
  • legend.box.margin контролирует поле вокруг области, содержащей все легенды
  • legend.spacing, legend.spacing.x, legend.spacing.y контролирует расстояние междулегенды

В вашем случае, если ваша цель состоит в сближении легенд по вертикали, вы можете попробовать, например, legend.margin = margin(-5, 0, 0, 0)

...