[R-es] Legendas en una gráfica de ggplot2

Víctor Granda García victorgr@nd@g@rci@ @ending from gm@il@com
Mie Jul 18 20:15:44 CEST 2018


Hola Sebastián.

Entiendo que tratas de que aparezca una leyenda con el tipo de curva
(l,o,u,i). Si quieres aprovechar las ventajas de ggplot (como las leyendas
automáticas) normalmente tienes que asignar linetype a una variable, y para
eso tienes que modificar un poco tus datos. Los has creado en formato
"wide" (ancho), donde tienes la columna t y una columna para cada curva.
Pero para lo que quieres hacer en ggplot, necesitas un formato "long"
(largo), donde tienes una columna con el tipo de curva (l,o,u,i) otra
columna con los valores para cada curva y la columna t, solo que repetida
para cada curva.

Con este código puedes cambiar los datos y hacer la gráfica como quieres:

library(ggplot2)

t=seq (-4, 4, by=0.01)

#### Con b=-2

l=exp(t+2)/(1+(exp(t+2)))

##con b igual a -1

o=exp(t+1)/(1+(exp(t+1)))

### Con b igual a 0.7

i=exp(t-0.7)/(1+(exp(t-0.7)))

### Con b igual a 2

u=exp(t-2)/(1+(exp(t-2)))

####unir los datos
b=c(0.3,2,-1,-2)

datos <- data.frame(
  t = t,
  l = l,
  o = o,
  i = i,
  u = u
)

# ahora usamos gather, del paquete tidyr, porque nos permite pasar del
formato
# "wide" a "long"
library(tidyr)
# install.packages('tidyr')
datos_long <- gather(datos, Curva, Valor, 2:5)
datos_long

###Graficos

ggplot(datos_long, aes(x = t, y = Valor, linetype = Curva)) +
  geom_line(color="gray48", size=1.2)+
  labs(x = expression(paste(theta)), y="Probabilidad")+
  theme(axis.text=element_text(size=14, face="bold"),
        axis.title=element_text(size=14))


Como ves, datos_long ahora si que permite que asignes linetype a una
variable (Curva) y automáticamente te dibuja diferentes tipos de linea para
cada curva y te coloca una leyenda.

Espero que te sirva, un saludo!!

On Wed, 18 Jul 2018 at 19:50 Sebastián Rangel <sebasrangel using gmail.com> wrote:

> Buenas tardes, estoy haciendo una gráfica de múltiples lineas pero no he
> podido generar las legendas. Alguno de ustedes me podría colaborar.
>
> library(ggplot2)
>
> #### Con b=-2
> t=seq (-4, 4, by=0.01)
> l=exp(t+2)/(1+(exp(t+2)))
>
> ##con b igual a -1
>
> t=seq (-4, 4, by=0.01)
> o=exp(t+1)/(1+(exp(t+1)))
>
> ### Con b igual a 0.7
>
> t=seq (-4, 4, by=0.01)
> i=exp(t-0.7)/(1+(exp(t-0.7)))
>
> ### Con b igual a 2
>
> t=seq (-4, 4, by=0.01)
> u=exp(t-2)/(1+(exp(t-2)))
>
> ####unir los datos
> b=c(0.3,2,-1,-2)
> datos=cbind(l,o,i,u)
> datos=data.frame(datos)
>
> ###Graficos
>
> ggplot(  )+
>   geom_line(aes(y = i, x=t), color="gray48", size=1.2, linetype="dashed") +
>   geom_line(aes(y = u, x=t), color = "gray48",
> size=1.2,linetype="twodash")+
>   geom_line(aes(y = o,x=t),  color = "gray48",
> size=1.2,linetype="longdash") +
>   geom_line(aes(y = l,x=t),  color="gray48", size=1.2,linetype="solid")+
>  labs(x = expression(paste(theta)), y="Probabilidad")+
> theme(axis.text=element_text(size=14, face="bold"),
>   axis.title=element_text(size=14))
>
> Saludos,
>
> Sebastián Rangel Quiñonez
>
>         [[alternative HTML version deleted]]
>
> _______________________________________________
> R-help-es mailing list
> R-help-es using r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
-- 
*Víctor Granda García*
Data Technician


v.granda using creaf.uab.cat
Tel. +34 93 581 33 53


Campus UAB. Edifici C. 08193 Bellaterra (Barcelona) | *www.creaf.cat*
<http://www.creaf.uab.es/cat/index.htm>

Abans d'imprimir aquest missatge electrònic penseu en el medi ambient.

	[[alternative HTML version deleted]]



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