Подтвердить что ты не робот

Уменьшение размера легенды в ggplot за пределами размера по умолчанию

Моя цель - сделать несколько графиков с ggplot и объединить их в один график, используя grid.arrange в пакете gridExtra.

У меня возникла проблема в том, что легенды в моем ggplot (хотя и соответствующие размеру для одного сюжета) слишком велики, когда я пытаюсь разместить графики рядом с grid.arrange. Полученные комбинированные графики уменьшают ось x, но сохраняют оригинальный размер легенды. Таким образом, результат - очень тощий сюжет, рядом с ненужной большой легендой. Поэтому я хотел бы уменьшить размер легенды в каждом сюжете, чтобы я мог разместить свои сюжеты бок о бок. Или, возможно, уменьшите их достаточно, чтобы привести их в реальный сюжет, не доводя до власти.

V1<-rnorm(10)
V2<-rnorm(10)
V3<-rnorm(10)
DF<-data.frame(V1,V2,V3)


ggplot(DF,aes(x=V1,y=V2,size=V3))+
geom_point(fill='red',shape=21)+
theme_bw()+
scale_size(range=c(5,20))

Эта команда plot создает стандартный размер легенды справа от графика.

enter image description here

Я пробовал использовать разные элементы темы:

+theme(legend.key.size = unit(0.5, "cm")

или

+theme(legend.key.width=unit(0.3,"cm"),legend.key.height=unit(0.3,"cm"),legend.position = c(0.7, 0.8))

И хотя я могу сделать легенду большей, используя эти команды тем, я не могу сделать легенду меньшей, чем легенда по умолчанию. Итак, есть ли способ уменьшить легенду за пределами размера по умолчанию?

Я также могу изменить размер моего pdf-устройства по умолчанию, чтобы сделать его более широким и разместить большие легенды, но сейчас я хотел бы работать со стандартным размером PDF.

4b9b3361

Ответ 1

Весь смысл легенды заключается в отображении эстетики на сюжете (например, цвета, заливки, формы или размера) до уровней, обозначенных в легенде. Параметры legend.key.size, .width и .height регулируют размер окна, окружающего элемент легенды. С цветом, заполнением и формой вы можете сделать элементы легенды такими же маленькими, как вам нравится, но с размером, размер элемента указывает, какой пузырь (-ы) соответствует тому элементу легенды, поэтому элементы легенды должны иметь размеры, соответствующие к тому, что находится на сюжете.

Вот три возможности, которые могут вам помочь:

Вариант 1: Поместите легенду внутри графика.

ggplot(DF,aes(x=V1,y=V2,size=V3))+
  geom_point(fill='red',shape=21)+
  theme_bw()+
  scale_size(range=c(5,20))+
  theme(legend.justification=c(1,0), legend.position=c(1,0))

Вариант 2: используйте facet_wrap(...), если сможете. Таким образом, вы получаете только одну легенду для набора графиков.

Вариант 3: используйте цвет и размер, а затем полностью скройте легенду размера.

ggplot(DF,aes(x=V1,y=V2,size=V3, color=V3))+
  geom_point(shape=19)+
  theme_bw()+
  scale_size(range=c(5,20), guide="none")+
  scale_color_gradient(high="#ff0000", low="#ffffcc")