Уменьшить общий размер легенды (элементы и текст) - PullRequest
0 голосов
/ 12 сентября 2018

Я строю некоторые данные с помощью R ggplot2. У меня есть две переменные, которые я строю как точечная диаграмма, с двумя дополнительными измерениями, представленными как цвет и форма. Тем не менее, сюжет плохо работает с легендой снаружи (маленькой на оси абсцисс).

Я переместил легенду внутрь, но теперь легенда слишком большая! Есть ли способ сделать его меньше, не включая уменьшение размера каждого отдельного компонента отдельно (заголовок легенды, ярлыки легенды, символы легенды)?

library(ggplot2)
p1  = ggplot(allPars, aes(x = log10(growthRate), y = log10(k), col = Background, shape = Timepoint))+
    geom_point(size = 2)+
    theme(legend.position = c(0.5,0.5))+
    xlab("Log10 Growth Rate")+
    ylab("Log10 K")
fig1 = plot_grid(p1, labels = "AUTO")
save_plot(filename = "~/projects/phd/Chapter4/fig4.pdf", plot = fig1, scale = 1)

enter image description here

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

Необходимо уменьшить размер элементов легенды (перезаписать переданные параметры size =2) и уменьшить размер шрифта.

Создать пример графика с большой легендой

library(ggplot2)
p <- ggplot(mtcars, 
            aes(drat, mpg, color = factor(gear), shape = factor(vs))) +
        geom_point(size = 2) +
        theme_classic() +
        theme(legend.position = c(0.1, 0.7))

Уменьшить размер элементов формы

# Overwrite given size (2) to 0.5 (super small)
p <- p + guides(shape = guide_legend(override.aes = list(size = 0.5)))

Уменьшение размера цветовых элементов

p <- p + guides(color = guide_legend(override.aes = list(size = 0.5)))

Уменьшение размера шрифта легенды

p <- p + theme(legend.title = element_text(size = 3), 
               legend.text = element_text(size = 3))

Вы также можете написать пользовательскую функцию для изменения ваших графиков:

addSmallLegend <- function(myPlot, pointSize = 0.5, textSize = 3, spaceLegend = 0.1) {
    myPlot +
        guides(shape = guide_legend(override.aes = list(size = pointSize)),
               color = guide_legend(override.aes = list(size = pointSize))) +
        theme(legend.title = element_text(size = textSize), 
              legend.text  = element_text(size = textSize),
              legend.key.size = unit(spaceLegend, "lines"))
}

# Apply on original plot
addSmallLegend(p)

Окончательный сюжет будет выглядеть так:

enter image description here

0 голосов
/ 12 сентября 2018

Как насчет изменения размера текста?

  theme(legend.title = element_text( size=2), legend.text=element_text(size=2))
...