Tutorial sobre el paquete ggplot2(), en R. Creación de gráficas de barras - Position.

Puedes seguir el tutorial por vídeo en https://youtu.be/JDsIv3__yTQ

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
##   Tratamiento  Color Aceitunas
## 1     Testigo  Verde        72
## 2     Tratado  Verde        33
## 3     Testigo Envero        11
## 4     Tratado Envero         8
## 5     Testigo  Negra        17
## 6     Tratado  Negra        59
#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.

Representamos el número de aceitunas que se han muestreado en cada tratamiento.

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.

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

position=position_dodge()

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"))

position=position_fill()

Para no tener que manipular los datos para averiguar los porcentajes y luego representarlos.

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"))