Как сделать так, чтобы легенда ggplot добавляла объекты горизонтально (против вертикально) - PullRequest
0 голосов
/ 18 мая 2018

Легенду в ggplot можно переместить в низ графического объекта в виде горизонтального легенды, добавив следующие аргументы в функцию theme:

  • legend.position="bottom" перемещает легенду под графиком
  • legend.direction="horizontal" ориентирует легенду в горизонтальное положение.

Однако на самом деле не ...

Кажется, что legend.direction="horizontal" просто уменьшает количество строк в легенде и количество объектов легенды в в каждой строке.

Это можно сделать вручную, используя guides(color=guide_legend(nrow=x)

dat <- data.frame(plot = rep(letters,2), val = rep(1:length(letters),2))
library(ggplot2)
ggplot(dat, aes(x = val, y = val, color = plot)) + 
  geom_point() +
  theme(legend.position="bottom") +
  guides(color=guide_legend(nrow=2))

enter image description here

Независимо ....

Если вы заметите в графическом выводе приведенного выше кода, хотя я могу контролировать «размеры» моей легенды (т.е. количество строк), Я не могу понять, какизмените порядок легенды с вертикального на горизонтальный .

  • Таким образом, вместо a на выше b и т. д. (" по вертикали"отсортировано), как указано выше, я хочу добавить b рядом с a (" horizontally "отсортировано).

Как сделать так, чтобы моя легенда добавляла объекты по горизонтали против вертикали?

Примерно так:

enter image description here

1 Ответ

0 голосов
/ 18 мая 2018

Попробуйте добавить byrow = TRUE к guide_legend:

ggplot(dat, aes(x = val, y = val, color = plot)) + 
  geom_point() +
  theme(legend.position="bottom") +
  guides(color=guide_legend(nrow=2, byrow = TRUE))

enter image description here

...