Francisco D. Salgado, 2018
fdsalgado@uazuay.edu.ec



Tutorial basado en: http://rpubs.com/daniballari/qplot

Gráficas base

La forma más basica de graficar una imagen, es utilizando la funcion plot.

plot(iris)

Histograma

hist(iris$Sepal.Length)

hist(iris$Sepal.Length,
     main="Histograma de longitud del sépalo",
     xlab="cm", ylab="Frecuencia", 
     col="yellow")

# Graficar un histograma con anchos de intervalos variables
hist(iris$Sepal.Length, breaks=c(4,5,6,7,8),
     main="Histograma de longitud del sépalo",
     xlab="cm", ylab="Frecuencia",
     col="yellow")

hist(iris$Sepal.Length, breaks=c(4,5,6,7,8),
     main="Histograma de longitud del sépalo",
     xlab="cm", ylab="Frecuencia",
     xlim=c(2, 10), ylim=c(0, 60),
     col="yellow")

Añade lineas verticales para mostrar la media y la mediana.

hist(iris$Sepal.Length, breaks=c(4,5,6,7,8),
     main="Histograma de longitud del sépalo",
     xlab="cm", ylab="Frecuencia",
     xlim=c(2, 10), ylim=c(0, 60),
     col="yellow")

# Gráfico de lineas verticales para la mediana y la media
abline(v=median(iris$Sepal.Length), col="red")
abline(v=mean(iris$Sepal.Length), col="blue")

median(iris$Sepal.Length)
## [1] 5.8
mean(iris$Sepal.Length)
## [1] 5.843333

Diagrama de caja y bigote

  • Q1, el Primer Cuartil es el valor mayor al 25% de los valores de la distribución.

  • Q2, el Segundo Cuartil es la mediana de la distribución, es el valor de la variable que ocupa el lugar central en un conjunto de datos ordenados.

  • Q3, el Tercer Cuartil es el valor que sobrepasa al 75% de los valores de la distribución.

boxplot(iris)

boxplot(iris[ ,-5],  main="Diagramas de caja",
        xlab="Dimensiones", ylab="cm",
        col="yellow")

boxplot(iris[ ,-5],  main="Diagramas de caja",
        xlab="Dimensiones", ylab="cm",
        col=c("red", "blue", "orange", "yellow"))

head(chickwts)
##   weight      feed
## 1    179 horsebean
## 2    160 horsebean
## 3    136 horsebean
## 4    227 horsebean
## 5    217 horsebean
## 6    168 horsebean
str(chickwts)
## 'data.frame':    71 obs. of  2 variables:
##  $ weight: num  179 160 136 227 217 168 108 124 143 140 ...
##  $ feed  : Factor w/ 6 levels "casein","horsebean",..: 2 2 2 2 2 2 2 2 2 2 ...
plot(weight ~ feed, data = chickwts)

Librería ggplot2

Se instala el paquete ggplot2, y se carga la librería.

# install.packages("ggplot2")
library(ggplot2)

ggplot(iris, aes(Petal.Length, Petal.Width)) + 
  geom_point(aes(shape = iris$Species))

ggplot(iris, aes(Petal.Length, Petal.Width)) + 
  geom_point(aes(color = iris$Species, shape = iris$Species), size = 3)

Revisa la ayuda de qplot() en http://ggplot2.tidyverse.org/reference/qplot.html

geom indica el tipo de grafico: histrograma, boxplot, etc.
ggplot trabaja sobre data.frames, por ello se debe asegurar que los datos sean data.frames.

Histograma

Al incluir una columna de un data.frame, por defecto se dibujará un histograma.

qplot( Sepal.Length, data = iris)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Incluye el argumento bins para indicar el número de clases del histograma

qplot( Sepal.Length, data = iris, bins = 15)

Aunque está indicado por defecto, puedes igual incluir que el tipo de geometría del gráfico a dibujar sea histograma. El resultado será igual al gráfico anterior.

qplot( Sepal.Length, data = iris, bins = 15, geom = "histogram")

Añade lineas verticales para mostrar la media y la mediana.

qplot( Sepal.Length, data = iris, bins = 15, geom = "histogram") +
geom_vline(xintercept = mean(iris$Sepal.Length), color="red")    +
geom_vline(xintercept = median(iris$Sepal.Length), color="blue")

Clasifica el histograma de acuerdo con una segunda variable.

qplot(Petal.Length, data = iris, bins=15, geom = "histogram", fill = Species)

Densidad

Convierte el histrograma en un gráfico de densidad.

qplot(Petal.Length, data = iris, geom = "density", fill = Species) 

Cambia el argumento fill por color para hacer los polígonos vacios.

qplot(Petal.Length, data = iris, geom = "density", color = Species)

Cambia el tipo de línea de las densidades.

qplot(Petal.Length, data = iris, geom = "density", color = Species, linetype=Species, size=1)

Utiliza el argumento facets para dividir ambos poligonos de densidades en gráficos diferentes. Observa el argumento facets en los dos ejemplos. En el primero se graficarán como columnas y en el segundo como filas.

qplot(Petal.Length, data = iris, geom = "density", color = Species,  facets = .~ Species)

qplot(Petal.Length, data = iris, geom = "density", color = Species,  facets = Species ~. ) 

Título y nombres de ejes

qplot(Petal.Length, data = iris, geom = "density",
      xlab = "cm", ylab = "Densidades", 
      main = "Largo del pétalo")

Diagrama de dispersión

qplot(Petal.Length, Petal.Width, data=iris)

qplot(Petal.Length, Petal.Width, data=iris, shape = Species)

qplot(Petal.Length, Petal.Width, data=iris, shape = Species, color = Species, size =5)

qplot(Petal.Length, Petal.Width, data=iris, color = Species, size = Sepal.Width)

### Diagrama de caja y bigote

qplot(Species, Petal.Width, data = iris, geom="boxplot")

qplot(Species, Petal.Width, data = iris, geom=c("boxplot", "jitter"))

qplot(Species, Petal.Width, data = iris, geom=c("boxplot", "jitter"), fill=Species)

qplot(Species, Petal.Width, data = iris, 
      geom="dotplot", stackdir = "center", binaxis = "y",
      color = Species, fill = Species)
## `stat_bindot()` using `bins = 30`. Pick better value with `binwidth`.

qplot(Species, Petal.Width, data = iris, 
      geom="violin", stackdir = "center", binaxis = "y",
      color = Species, fill = Species)
## Warning: Ignoring unknown parameters: stackdir, binaxis

Documentación