lunes, 20 de julio de 2015

GGPLOT2. Gráfico de barras III - Posición de barras


---
title: "GGPLOT2. Gráfico de barras III - Position"
author: "Raúl Ortiz"
date: "Saturday, July 17, 2015"
output: pdf_document
---

```{r}
# Empezamos introduciendo nuestros datos y creando el DataFrame

Tratamiento = factor(c(1,2,1,2,1,2),labels=c("Testigo", "Tratado"))
Color = factor(c(1,1,2,2,3,3),labels=c("Verde","Envero","Negra"))
Aceitunas = c(72,33,11,8,17,59)

df=data.frame(Tratamiento,Color,Aceitunas)
df
```

```{r}
#install.packages("ggplot2") # Si es la primera vez que lo usas, tendrás que instalar primero el paquete.
library (ggplot2) # Después hay que cargarlo cada vez que inicies sesión.
```

```{r}
# Representamos el número de aceitunas que se han muestreado en cada tratamiento.

ggplot(data=df, aes(x=Tratamiento, y=Aceitunas, fill=Color)) +
    geom_bar(stat="identity") +
    scale_fill_manual(values=c("darkgreen", "purple","black"))
# Este gráfico representa los porcentajes de aceitunas que de cada color, hay los distintos tratamientos en el momento de la recolección. Los porcentajes se encuentran "apilados" en cada columna, es decir, unos encima de otro.

# Hay otra manera de representar los mismos datos para que en vez de aplilados "position=stack()", queden posicionados unos junto a otros "position=position_dodge()".
ggplot(data=df, aes(x=Tratamiento, y=Aceitunas, fill=Color)) +
    geom_bar(stat="identity", position=position_dodge()) +
    scale_fill_manual(values=c("darkgreen", "purple","black"))

ggplot(data=df, aes(x=Tratamiento, y=Aceitunas, fill=Color)) +
    geom_bar(stat="identity", position=position_stack()) +
    scale_fill_manual(values=c("darkgreen", "purple","black"))

# Ademas de apilados o en columnas contiguas, hay otras formas de exponer los datos.

# position=position_identity() representa los valores solapados. Esta opción es mucho más interesante en gráficos del tipo histogramas.
ggplot(data=df, aes(x=Tratamiento, y=Aceitunas, fill=Color)) +
    geom_bar(stat="identity", position=position_identity()) +
    scale_fill_manual(values=c("darkgreen", "purple","black"))

# Se puede comprobar que están solapados si le damos cierto grado de transparencia al color de las barras, mediante  el comando "alpha".
ggplot(data=df, aes(x=Tratamiento, y=Aceitunas, fill=Color)) +
    geom_bar(stat="identity", alpha=0.3, position=position_identity()) +
    scale_fill_manual(values=c("darkgreen", "purple","black"))

# position=position_jitter() Hace que las columnas están unas delantes de las otras, como en position=position_identity(), pero para que no queden totalmente solapadas modifica sus anchuras y el punto base, de manera que al menos se pueda ver un poco de cada barra.
ggplot(data=df, aes(x=Tratamiento, y=Aceitunas, fill=Color)) +
    geom_bar(stat="identity", position=position_jitter()) +
    scale_fill_manual(values=c("darkgreen", "purple","black"))

# Si preferimos que el punto base no se modifique, lo podemos especificar de la siguiente manera.
ggplot(data=df, aes(x=Tratamiento, y=Aceitunas, fill=Color)) +
    geom_bar(stat="identity", position=position_jitter(height=0)) +
    scale_fill_manual(values=c("darkgreen", "purple","black"))

# position=position_jitterdodge()) Hace que las barras se pongan unas junto a otras, pero de manera irregular.
ggplot(data=df, aes(x=Tratamiento, y=Aceitunas, fill=Color)) +
    geom_bar(stat="identity", position=position_jitterdodge()) +
    scale_fill_manual(values=c("darkgreen", "purple","black"))


# Supongamos que el número de aceitunas no suma 100
df$Aceitunas = c(96,30,18,10,20,108)

# Entonces la comparación con barra de datos apilados no sería tan eficaz.
ggplot(data=df, aes(x=Tratamiento, y=Aceitunas, fill=Color)) +
    geom_bar(stat="identity", position=position_stack()) +
    scale_fill_manual(values=c("darkgreen", "purple","black"))

# Tenemos la opición de manipular los datos para averiguar los porcentajes y luego representarlos, o bien usar "position=position_fill()"
ggplot(data=df, aes(x=Tratamiento, y=Aceitunas, fill=Color)) +
    geom_bar(stat="identity", position=position_fill()) +
    scale_fill_manual(values=c("darkgreen", "purple","black"))
```

No hay comentarios:

Publicar un comentario