Question ggplot2: Ajuste la taille du symbole dans les légendes


Comment changer la taille des symboles dans les légendes? J'ai vérifié le document de theme mais n'a trouvé aucune réponse.

Voici un exemple:

library(ggplot2);library(grid)
set.seed(1000)
x <- 1:6
mu <- sin(x)
observed <- mu + rnorm(length(x), 0, 0.5*sd(mu))
data <- data.frame(
  t=rep(x, 2), 
  value=c(mu, observed) - min(mu, observed) + 0.5, 
  class = rep(c("mu", "observed"), each=length(x)))
mu <- data$value[1:length(x)]
observed <- data$value[1:length(x) + length(x)]
mu.min <- mu - 3 * 0.5 * sd(mu)
mu.max <- mu + 3 * 0.5 * sd(mu)
g <- ggplot(data=data)
g <- g + geom_point(aes(x=value, y=t, shape=class, size=24)) + scale_size(guide="none")
g <- g + scale_shape(name="", labels=expression(paste(S[u](t), ", the observation at time ", t), paste(mu[u](t), ", the mean of ", tilde(S)[u](t), "          ")))
stat_function.color <- gray(0.5)
g <- g + geom_segment(aes(y=1:6, yend=1:6, x=mu.min, xend=mu.max, linetype="2", alpha = 1), color=stat_function.color) + scale_alpha(guide="none") + scale_linetype(name= "", labels=expression(paste("probability density function (pdf) of ", tilde(S)[u], " at time ", t)))
for(i in 1:length(x)) {
  g <- g + stat_function(fun=function(x, i) {
    ifelse( x <= mu.max[i] & x >= mu.min[i], dnorm(x, mu[i], sd(mu)) + i, NA)
    }, color=stat_function.color, args=list(i=i))
}
background.color <- gray(0.75)
g <- g + theme(
  axis.text=element_blank(),
  title=element_text(size=rel(1.5)),
  legend.text=element_text(size=rel(1.5)),
  legend.position="top",
  legend.direction="vertical",
#   legend.key.size = unit(2, "cm"),
  panel.background=element_rect(fill=background.color), 
  panel.grid.major=element_line(color=background.color),
  panel.grid.minor=element_line(color=background.color)
  ) + coord_flip()
plot(g)

31
2018-02-25 02:13


origine


Réponses:


Vous pouvez effectuer ces types de modifications manuellement en utilisant override.aes argument à guide_legend():

g <- g + guides(shape = guide_legend(override.aes = list(size = 5)))
print(g)

42
2018-02-25 02:26



Tu devrais utiliser:

theme(legend.key.size = unit(3,"line"))

25
2018-01-25 03:49



La réponse de Marius n'a pas fonctionné pour moi à partir de la version R 3.2.2. Vous pouvez toujours appeler guide_legend() avec le même override.eas argument mais vous devrez spécifier color au lieu de shape dans la fonction wrapper.

Donc, si vous exécutez une version ultérieure de R, essayez plutôt ceci:

g + guides(color = guide_legend(override.aes = list(size=5)))

8
2018-02-04 12:39