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

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

# Empezamos introduciendo nuestros datos y creando el DataFrame

NHoja = seq(1:20)
NPulgones = c(39,31,34,28,33,22,26,27,20,23,25,20,9,19,12,16,11,12,17,10)
Tratamiento = rep((c("A","B","C")),c(5,7,8))

df=data.frame(NHoja,NPulgones,Tratamiento) 
df
##    NHoja NPulgones Tratamiento
## 1      1        39           A
## 2      2        31           A
## 3      3        34           A
## 4      4        28           A
## 5      5        33           A
## 6      6        22           B
## 7      7        26           B
## 8      8        27           B
## 9      9        20           B
## 10    10        23           B
## 11    11        25           B
## 12    12        20           B
## 13    13         9           C
## 14    14        19           C
## 15    15        12           C
## 16    16        16           C
## 17    17        11           C
## 18    18        12           C
## 19    19        17           C
## 20    20        10           C

Instalamos y/o cargamos el paquete ggplot2().

#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.

Para crear un gráfico de barras se sigue la siguiente estructura.

ggplot(data=df, aes(x=Tratamiento)) + geom_bar(stat="bin")

Hay que especificar la fuente de los datos, en nuestro caso el DataFrame “df”. Después las variables que representaremos en el gráfico y también el tipo de gráfico (barras, caja y bigotes, violin, queso…).

En el caso de gráfico de barras. Si sólo se especifica una variable, R la representa en el eje de abcisas (X) y en el eje de ordenadas (Y) representará el número de entradas o datos que tenga cada variable. La orden para que las cuente se especifica mediante stat=“bin”, y es la opción por defecto.

ggplot(data=df, aes(x=Tratamiento)) + geom_bar()

Si queremos representar dos variables tendremos que usar stat=“identity”.

ggplot(data=df, aes(x=Tratamiento, y=NPulgones)) + geom_bar(stat="identity")

Si no lo hacemos R nos dará un mensaje de aviso.

ggplot(data=df, aes(x=Tratamiento, y=NPulgones)) + geom_bar()

#Error : Mapping a variable to y and also using stat="bin".
#  With stat="bin", it will attempt to set the y value to the count of cases in each group.
#  This can result in unexpected behavior and will not be allowed in a future version of ggplot2.
#  If you want y to represent counts of cases, use stat="bin" and don't map a variable to y.
#  If you want y to represent values in the data, use stat="identity".
#  See ?geom_bar for examples. (Defunct; last used in version 0.9.2)

Representamos el número de pulgones en cada muestra u hoja.

ggplot(data=df, aes(x=NHoja, y=NPulgones)) + geom_bar(stat="identity")

En el eje de abcisas no aparecen representados todos los número de hojas. Esto sucede porque R ha visto que hemos creado un vector con números y por defecto le ha dado el caracter numérico a esa variable.

str(df)
## 'data.frame':    20 obs. of  3 variables:
##  $ NHoja      : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ NPulgones  : num  39 31 34 28 33 22 26 27 20 23 ...
##  $ Tratamiento: Factor w/ 3 levels "A","B","C": 1 1 1 1 1 2 2 2 2 2 ...
is.numeric(df$NHoja)
## [1] TRUE
class(df$NHoja)
## [1] "integer"
# Cambiamos la clase a factor, porque en realidad los n?meros representan los nombres de cada hoja y no vamos a hacer operaciones num?ricas con ellos.
df$NHoja = as.factor(df$NHoja)

# Comprobamos
str(df)
## 'data.frame':    20 obs. of  3 variables:
##  $ NHoja      : Factor w/ 20 levels "1","2","3","4",..: 1 2 3 4 5 6 7 8 9 10 ...
##  $ NPulgones  : num  39 31 34 28 33 22 26 27 20 23 ...
##  $ Tratamiento: Factor w/ 3 levels "A","B","C": 1 1 1 1 1 2 2 2 2 2 ...
is.numeric(df$NHoja)
## [1] FALSE
class(df$NHoja)
## [1] "factor"
# Volvemos a hacer la gráfica.
ggplot(data=df, aes(x=NHoja, y=NPulgones)) + geom_bar(stat="identity")

En la sección de aes, también podemos especificar si queremos que además queremos diferenciar el color de las barras, según los niveles de otra variable, por ejemplo, dar un color diferente según el tipo de tratamiento que han recibido. Para ello utilizaremos la expresión “fill=Tratamiento”.

ggplot(data=df, aes(x=NHoja, y=NPulgones, fill=Tratamiento)) + geom_bar(stat="identity")

Podemos especificar los colores de relleno con el comando “scale_fill_manual”.

ggplot(data=df, aes(x=NHoja, y=NPulgones, fill=Tratamiento)) + 
    geom_bar(stat="identity") +
    scale_fill_manual(values=c("#FF0033", "#3300FF","#00CC00"))

ggplot(data=df, aes(x=NHoja, y=NPulgones, fill=NHoja)) + 
    geom_bar(stat="identity")