4 Visualización de datos
R es una herramienta potente para la generación de gráficas de todo tipo y algunas pueden interactivas. A continuación se presentan ejemplos de visualización de datos basados en el tutorial de Daniela Ballari: http://rpubs.com/daniballari/qplot
4.1 Gráficas base
La forma más basica de generar un gráfico de datos, es utilizando la funcion plot
.
4.1.1 Histograma
Con la función hist
podemos crear un histograma. Un histograma es una gráfica que permite descubrir y mostrar la distribución de frecuencia (forma) de un conjunto de datos continuos (por ejemplo, distribución normal), además permite la inspección de valores atípicos, asimetría, etc.
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")
Se pueden añadir lineas verticales para mostrar la media y la mediana como en la siguiente gráfica:
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")
## [1] 5.8
## [1] 5.843333
4.1.2 Diagrama de caja y bigote
Un diagrama de caja y bigote, también llamado diagrama de caja, muestra el resumen de cinco números de un conjunto de datos. El resumen de cinco números es el valor mínimo, el primer cuartil (Q1), la mediana (Q2), el tercer cuartil (Q3) y el valor máximo. Lo podemos generar con la función boxplot
.
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[ ,-5], main="Diagramas de caja",
xlab="Dimensiones", ylab="cm",
col=c("red", "blue", "orange", "yellow"))
## weight feed
## 1 179 horsebean
## 2 160 horsebean
## 3 136 horsebean
## 4 227 horsebean
## 5 217 horsebean
## 6 168 horsebean
## '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 ...
4.2 Librería ggplot2
Como parte de tidyverse, ggplot2 es un sistema para crear gráficos, basado en The Grammar of Graphics. Se proporcionan los datos, se indica a ggplot2 cómo configurar la estética y el paquete se ocupa de los detalles. Para ello, se instala el paquete ggplot2
(si tidyverse no se ha instalado ya), y se carga este paquete o librería con library(ggplot2)
.
# 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)
Con la función qplot()
se puede realizar gráficos de una manera rápida. Revisar su documentación en: https://ggplot2.tidyverse.org/reference/qplot.html
4.2.1 Histograma
Al incluir una columna de un data.frame o un tibble, por defecto se dibujará un histograma. ggplot trabaja sobre data.frames o tibbles, por ello se debe asegurar que los datos tengan cualquiera de estas estructuras.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Incluye el argumento bins
para indicar el número de clases del histograma
Aunque esté indicado por defecto, se puede igual incluir que el tipo de geometría del gráfico a dibujar sea histograma. El resultado será igual al gráfico anterior. El parámetro geom
indica el tipo de grafico: histrograma, boxplot, etc.
Añadir líneas 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")
Clasificar el histograma de acuerdo con una segunda variable.
4.2.2 Densidad
Un gráfico de densidad es una versión suavizada del histograma y se utiliza en el mismo concepto para la representación de la distribución de una variable numérica.
Cambiar el argumento fill
por color para hacer los polígonos vacios.
Cambiar el tipo de línea de las densidades.
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.
4.2.3 Título y nombres de ejes
4.2.4 Diagrama de dispersión
### Diagrama de caja y bigote
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
4.3 Plotly
Plotly es otro paquete de gráficos en R para crear gráficos interactivos con calidad de publicación.
##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
4.4 Más gráficos
- Galería de gráficos en R: https://www.r-graph-gallery.com/
- ggplot2: https://www.r-graph-gallery.com/portfolio/ggplot2-package/
- plotly: https://plot.ly/r/