[R-es] Añadir leyenda a un gráfico con eje secundario en ggplot

Álvaro Hernández Vicente @|v@rohv @end|ng |rom um@e@
Mie Feb 12 15:40:49 CET 2020


Hola, Raúl:

Lo de poner las líneas correspondientes lo tienes ya, solo que has 
escrito "nueva" en lugar de "actual" que es como has llamado a esa variable.

Y si quieres poner una leyenda para el color de la línea lo puedes hacer 
de dos formas: pasando el data.frame a formato largo ("actual" y 
"propuesta" en una misma variable) o bien añadiéndola tú manualmente. No 
está relacionada con tener un eje secundario.

En el primer caso puedes hacer:

resumen %>%
   pivot_longer(cols = actual:propuesta, names_to = "Variable", values_to = "Valor") %>%
   ggplot(aes(x = factor(ejex))) +
   geom_col(data = resumen, aes(y = peso), fill = "yellow", alpha = 0.5) +
   geom_line(aes(y = (Valor*10), color = Variable, group = Variable)) +
   scale_y_continuous(sec.axis = sec_axis(~./10), name = "") +
   labs(y = "")

Y para añadirla manualmente puedes hacer:

ggplot(resumen, aes(x = factor(ejex), group = 1)) +  geom_col(aes(y = 
peso), fill = "yellow", alpha = 0.5) +  geom_line(aes(y = actual*10, 
color = "Actual")) +  geom_line(aes(y = propuesta*10, color = 
"Propuesta")) +  scale_y_continuous(sec.axis = sec_axis(~./10), name = 
"") +  scale_color_manual(values = c("Actual" = "red", "Propuesta" = 
"blue"))

Un saludo
Álvaro

El 12/2/20 a las 14:55, Raúl Vaquerizo escribió:
> Hola,
>
> Me he dado cuenta que no soy capaz de añadir la leyenda a un gráfico 
> con eje secundario en ggplot2. Os paso un ejemplo reproducible para 
> ver si alguno puede ayudarme:
>
> ejex <- seq(1:20)
> peso <- rnorm(20,mean=1000,sd=300)
> actual <- rgamma(20,shape=seq(200,20, length.out = 20))
> propuesta <- actual + rnorm(20,3,3)
>
> resumen <- cbind.data.frame(ejex, peso, actual, propuesta)
>
> g2 <- ggplot(resumen, aes(x=factor(ejex))) +
>   geom_col(aes(y=peso),fill="yellow",alpha=0.5) +
>   geom_line(aes(y=actual*10), group=1, color="red") +
>   geom_line(aes(y=nueva*10), group=1, color="blue") +
>   scale_y_continuous(sec.axis = sec_axis(~./10), name="")
> g2
>
> Necesito poner las líneas correspondientes a las variables actual y 
> propuesta. Nada más, pero tras varios intentos, exabruptos, scales y 
> demás ggplot me está derrotando. Gracias.
>
> _______________________________________________
> R-help-es mailing list
> R-help-es using r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es

	[[alternative HTML version deleted]]



Más información sobre la lista de distribución R-help-es