Documentos de Académico
Documentos de Profesional
Documentos de Cultura
I. Introducción y objetivos
V. Resumen
VIII. Glosario
IX. Bibliografía
Lección 1 de 9
I. Introducción y objetivos
En esta unidad, además de seguir realizando transformación y limpieza de datos, se introducirá al alumno a
las librerías más populares para visualización de datos en R:
Realización de gráficos básicos en R.
Para todas las secciones se mostrarán elementos similares, desde la creación de gráficas simples,
agregación de texto y de color, hasta la realización de diferentes tipos de visualización como diagramas de
dispersión, histogramas, gráficos de barras, etc.
C O NT I NU A R
1 Conocer qué tipo de gráficas utilizar en función del dato que se quiera representar.
2 Saber agregar elementos textuales en los diferentes ejes de una gráfica, además del título.
Con total seguridad, en casi cualquier proyecto de ciencia de datos será necesario mostrar resultados o,
simplemente, dar voz a los datos a través de la visualización de datos. En R, existen por defecto funciones
preparadas para realizar gráficas sin necesidad (por el momento) de instalar librerías de visualización de
datos.
Dentro de las diferentes funciones de R dedicadas a obtener gráficos, existen tres grupos principales:
F UN C I O N E S DE A LT O N I V E L F UN C I O N E S DE BA JO N I V E L F UN C I O N E S I N T E R A C T I VA S
Funciones básicas que crean un gráfico, añaden color y añaden elementos textuales en los ejes “x” e “y”.
F UN C I O N E S DE A LT O N I V E L F UN C I O N E S DE BA JO N I V E L F UN C I O N E S I N T E R A C T I VA S
Aquellas que necesitan de un gráfico creado previamente. Son las que nos permiten añadir líneas, puntos,
etc.
F UN C I O N E S DE A LT O N I V E L F UN C I O N E S DE BA JO N I V E L F UN C I O N E S I N T E R A C T I VA S
Aquellas que nos permiten interactuar con el gráfico y muestran información de forma emergente sobre las
diferentes observaciones de este, realizando zoom, etc.
C O NT I NU A R
R_Graficos_Basicos_HTML.zip
733.5 KB
R_Graficos_Basicos_RMD.zip
3.7 KB
La función más básica para realizar gráficas en R es plot, que produce un gráfico diferente en función del
tipo de dato. Existen los siguientes gráficos en función del tipo de variable:
C O NT I NU A R
1
Vector
Grafico de los elementos sobre su índice (por lo general, de puntos).
plot(c)
Factor
Se representarán los valores de la variable numérica en función de cada factor de la variable categórica en
forma de barra vertical.
plot(fact)
Figura 2. Gráfica simple de un vector categórico.
Fuente: elaboración propia.
C O NT I NU A R
Matriz
Diagrama de dispersión de la segunda columna sobre la primera (a no ser que se especifique otro orden).
my.mat <- matrix(1:30, nrow = 10, ncol = 3)
plot(my.mat)
C O NT I NU A R
C O NT I NU A R
4
Dataframe
Matriz gráfica de visualización entre pares (diagrama pairs). Se muestra una gráfica para todas las variables
entre sí, es decir, la primera con la segunda, la primera con la tercera, etc.
Como ejemplo, utilizaremos el dataframe por defecto en R: iris. Este dataset contiene información sobre el
lirio repartida en las siguientes variables:
C O NT I NU A R
C O NT I NU A R
plot(iris)
Figura 5. Gráfica simple de un dataframe.
Fuente: elaboración propia.
En el caso de que la función plot tome más de un elemento, producirá los siguientes tipos de gráficas, en
función del tipo de dato.
C O NT I NU A R
Vectores numéricos
Nube de puntos de “y” sobre “x”.
plot(v.1, v.2)
Figura 6. Gráfica de dispersión entre dos vectores.
Fuente: elaboración propia.
C O NT I NU A R
plot(x, y)
C O NT I NU A R
plot(new.fact, fact)
C O NT I NU A R
Primero, se presenta la gráfica básica entre ambos, su scatter plot o diagrama de dispersión. Aquí se
mostrará un punto para cada valor de “x” y de “y”:
plot(vec.1, vec.2)
Figura 9. Scatter plot.
Fuente: elaboración propia.
C O NT I NU A R
plot(vec.1, vec.2,
ylab = "Vector 2",
xlab = "Vector 1",
main = "Scatter plot X ~ Y")
C O NT I NU A R
Si es necesario, puede aumentarse el tamaño de la
fuente de los ejes mediante el parámetro “cex.lab”. Del
mismo modo, podemos cambiar el tamaño de fuente del
título con “cex.main”. Además, puede cambiarse el color
de cualquier elemento de texto con los parámetros
“col.lab” y “col.main”.
C O NT I NU A R
plot(vec.1, vec.2,
ylab = "Vector 2",
xlab = "Vector 1",
main = "Scatter plot X ~ Y",
cex.lab = 1.5,
cex.main = 3,
col.lab = "red",
col.main = "blue")
Figura 11. Modificar tamaño y color de texto en los ejes.
Fuente: elaboración propia.
Salvo necesidad específica de aumentar los textos de una gráfica, por ejemplo, para que puedan distinguirse
con facilidad para una presentación, lo habitual es trabajar con estos parámetros por defecto.
C O NT I NU A R
Para mejorar la legibilidad del gráfico, a veces puede resultar interesante modificar la posición del texto de
los valores de los ejes. Esto se consigue modificando el valor del parámetro “las”, que puede tomar valores
de cero a tres:
0
–
Siempre paralelo al eje (por defecto).
1
–
Mostrar horizontal.
2
–
Mostrar perpendicular al eje.
3
–
Mostrar vertical.
C O NT I NU A R
plot(vec.1, vec.2,
ylab = "Vector 2",
xlab = "Vector 1",
main = "Scatter plot X ~ Y",
las = 1)
C O NT I NU A R
plot(vec.1, vec.2,
ylab = "Vector 2",
xlab = "Vector 1",
main = "Scatter plot X ~ Y",
las = 2)
C O NT I NU A R
plot(vec.1, vec.2,
ylab = "Vector 2",
xlab = "Vector 1",
main = "Scatter plot X ~ Y",
las = 3)
C O NT I NU A R
"p"
Representación con puntos.
plot(vec.1, vec.2,
ylab = "Vector 2",
xlab = "Vector 1",
main = "Scatter plot X ~ Y",
las = 1,
type = 'p')
Figura 15. Representación con puntos.
Fuente: elaboración propia.
C O NT I NU A R
"I"
Representación con líneas. En el caso de los vectores 1 y 2, con una longitud de 100 elementos cada uno,
irán uniendo a traves de una línea todos sus elementos de forma continua.
plot(vec.1, vec.2,
ylab = "Vector 2",
xlab = "Vector 1",
main = "Scatter plot X ~ Y",
las = 1,
type = 'l')
C O NT I NU A R
"B"
Puntos y líneas.
plot(vec.1, vec.2,
ylab = "Vector 2",
xlab = "Vector 1",
main = "Scatter plot X ~ Y",
las = 1,
type = 'b')
C O NT I NU A R
"C"
Solo las líneas sin el punto de unión.
plot(vec.1, vec.2,
ylab = "Vector 2",
xlab = "Vector 1",
main = "Scatter plot X ~ Y",
las = 1,
type = 'c')
Figura 18. Representación sin puntos y con líneas.
Fuente: elaboración propia.
C O NT I NU A R
"O"
Se representan las líneas por encima de los puntos.
plot(vec.1, vec.2,
ylab = "Vector 2",
xlab = "Vector 1",
main = "Scatter plot X ~ Y",
las = 1,
type = 'o')
Figura 19. Representación: líneas por encima de los puntos.
Fuente: elaboración propia.
C O NT I NU A R
"H"
Representación con histograma. Para cada valor de “x” se representará la línea vertical del valor “y”.
plot(vec.1, vec.2,
ylab = "Vector 2",
xlab = "Vector 1",
main = "Scatter plot X ~ Y",
las = 1,
type = 'h')
C O NT I NU A R
"S"
Mostrar la gráfica de forma escalonada (steps).
plot(vec.1, vec.2,
ylab = "Vector 2",
xlab = "Vector 1",
main = "Scatter plot X ~ Y",
las = 1,
type = 's')
Figura 21. Representación escalonada.
Fuente: elaboración propia.
C O NT I NU A R
plot(v.1, v.2,
xlab = "Lineal",
ylab = "Cuadrática",
main = "Representación cuadrática",
col = 'blue')
Figura 22. Cambiando el color.
Fuente: elaboración propia.
C O NT I NU A R
plot(v.1, v.2,
xlab = "Lineal",
ylab = "Cuadrática",
main = "Representación cuadrática",
col = 'blue',
cex = 1)
plot(v.1, v.2,
xlab = "Lineal",
ylab = "Cuadrática",
main = "Representación cuadrática",
col = 'red',
cex = 5)
Figura 24. Cambiar el tipo de marcador (II).
Fuente: elaboración propia.
C O NT I NU A R
plot(v.1, v.2,
xlab = "Lineal",
ylab = "Cuadrática",
main = "Representación cuadrática",
col = 'blue',
type = "l",
lwd = 7)
Figura 25. Cambiar el tipo de marcador (III).
Fuente: elaboración propia.
C O NT I NU A R
plot(v.1, v.2,
xlab = "Lineal",
ylab = "Cuadrática",
main = "Representación cuadrática",
col = 'green',
type = "l",
lwd = 3,
lty = 3)
Figura 26. Cambiar el tipo de marcador (IV).
Fuente: elaboración propia.
C O NT I NU A R
Fuera de la función plot, para añadir una leyenda a la visualización, se utiliza la función legend, en donde
tendremos que añadir los siguientes parámetros importantes:
legend
–
Valor que tendrá cada valor que se muestre en la leyenda.
title
–
Título de la leyenda.
Posición
–
Se pueden distinguir las siguientes posiciones: “bottomright”, “bottom”, “bottomleft”, “left”, “topleft”, “top”,
“topright”, “right” y “center”.
plot(v.1, v.2,
xlab = "Lineal",
ylab = "Cuadrática",
main = "Representación cuadrática",
col = 'darkgreen',
type = "l",
lwd = 3,
lty = 3)
C O NT I NU A R
C O NT I NU A R
par(mfrow=c(2,2))
# Fila 1, columna 1
plot(v.1, v.2,
xlab = "Lineal",
ylab = "Cuadrática",
main = "Representación cuadrática",
col = 'darkgreen',
type = "l",
lwd = 3,
lty = 3)
# Fila 2, columna 1
plot(fact)
# Fila 1, columna 2
plot(x, y)
# Fila 2, columna 2
plot(x, y)
Figura 28. Crear gráficas múltiples.
Fuente: elaboración propia.
R, también dispone de funciones para poder guardar nuestras gráficas: a través de los formatos JPEG, PNG
o PDF. Es muy importante que, una vez generada la gráfica, cerremos el espacio gráfico con la función
“dev.off”.
pdf("Lineal_y_cuadrática.pdf")
plot(v.1, v.2,
xlab = "Lineal",
ylab = "Cuadrática",
main = "Representación cuadrática",
col = 'darkgreen',
type = "l",
lwd = 3,
lty = 3)
dev.off()
## png
## 2
C O NT I NU A R
C O NT I NU A R
hist(normal.values,
ylab = "Frecuencia",
xlab = "Valores",
main = "Histograma",
col = "grey",
border = "blue")
C O NT I NU A R
2 Boxplot.
boxplot(normal.values,
border = "darkgreen",
col = "darkseagreen",
main = "Boxplot",
las = 1,
outcol="darkred")
Figura 30. Diagrama de caja y bigotes.
Fuente: elaboración propia.
C O NT I NU A R
3 Diagrama de barras.
C O NT I NU A R
Como se puede observar, en esta visualización, se ha utilizado un gradiente de color. Se pueden encontrar
los siguientes:
“rainbow”
"heat.colors”
"terrain.colors”
"topo.colors”
"cm.colors”
C O NT I NU A R
v <- c(100, 32, 87, 57, 110)
En este caso, al ser todos los valores positivos, todas las barras verticales se muestran
de forma ascendente, siendo la que tiene un mayor valor la que está situada en quinta
posición con valor 110.
C O NT I NU A R
A BLI N E PO I N T S LI N E S
Puede ser de dos tipos: “v”, vertical en el punto “x”, u “h”, horizontal en el punto “y”.
A BLI N E PO I N T S LI N E S
A BLI N E PO I N T S LI N E S
Pinta líneas en las coordenadas “x” e “y”.
C O NT I NU A R
hist(normal.values,
ylab = "Frecuencia",
xlab = "Valores",
main = "Histograma",
col = "grey",
border = "blue")
C O NT I NU A R
set.seed(123)
a <- sample(1:100, 10, replace = F)
b <- sample(1:100, 10, replace = F)
Según el libro The grammar of graphics 1, Ggplot22 es una librería de visualización de datos que trabaja a
nivel de capa, es decir: permite ir añadiendo nuevos elementos estéticos a nuestra visualización de datos.
1 Wilkinson, L. The grammar of graphics. Springer; 2005. Puedes adquirir este libro en
este enlace.
2 Web de Ggplot2. [En línea] Disponible en este enlace.
C O NT I NU A R
Este paquete está disponible en dos formatos: desde Tidyverse o, directamente, descargando Ggplot2. Para
explicar las bondades de esta librería, se utilizará la segunda opción.
GGPLOT2_HTML.zip
569.2 KB
GGPLOT2_RMD.zip
2.8 KB
# install.packages("ggplot2")
library(ggplot2)
C O NT I NU A R
C O NT I NU A R
Para comenzar el trabajo en Ggplot2, una vez se ha importado la librería, se toma el dataset midwest, que
viene precargado en dicha librería; este dataset contiene información relativa a condados de Estados
Unidos. La información del dataset está disponible en este enlace.
summary(midwest)
## PID county state area
## Min. : 561 Length:437 Length:437 Min. :0.00500
## 1st Qu.: 670 Class :character Class :character 1st Qu.:0.02400
## Median :1221 Mode :character Mode :character Median :0.03000
## Mean :1437 Mean :0.03317
## 3rd Qu.:2059 3rd Qu.:0.03800
## Max. :3052 Max. :0.11000
## poptotal popdensity popwhite popblack
## Min. : 1701 Min. : 85.05 Min. : 416 Min. : 0
## 1st Qu.: 18840 1st Qu.: 622.41 1st Qu.: 18630 1st Qu.: 29
## Median : 35324 Median : 1156.21 Median : 34471 Median : 201
## Mean : 96130 Mean : 3097.74 Mean : 81840 Mean : 11024
## 3rd Qu.: 75651 3rd Qu.: 2330.00 3rd Qu.: 72968 3rd Qu.: 1291
## Max. :5105067 Max. :88018.40 Max. :3204947 Max. :1317147
## popamerindian popasian popother percwhite
## Min. : 4.0 Min. : 0 Min. : 0 Min. :10.69
## 1st Qu.: 44.0 1st Qu.: 35 1st Qu.: 20 1st Qu.:94.89
## Median : 94.0 Median : 102 Median : 66 Median :98.03
## Mean : 343.1 Mean : 1310 Mean : 1613 Mean :95.56
## 3rd Qu.: 288.0 3rd Qu.: 401 3rd Qu.: 345 3rd Qu.:99.07
## Max. :10289.0 Max. :188565 Max. :384119 Max. :99.82
## percblack percamerindan percasian percother
## Min. : 0.0000 Min. : 0.05623 Min. :0.0000 Min. :0.00000
## 1st Qu.: 0.1157 1st Qu.: 0.15793 1st Qu.:0.1737 1st Qu.:0.09102
## Median : 0.5390 Median : 0.21502 Median :0.2972 Median :0.17844
## Mean : 2.6763 Mean : 0.79894 Mean :0.4872 Mean :0.47906
## 3rd Qu.: 2.6014 3rd Qu.: 0.38362 3rd Qu.:0.5212 3rd Qu.:0.48050
## Max. :40.2100 Max. :89.17738 Max. :5.0705 Max. :7.52427
## popadults perchsd percollege percprof
## Min. : 1287 Min. :46.91 Min. : 7.336 Min. : 0.5203
## 1st Qu.: 12271 1st Qu.:71.33 1st Qu.:14.114 1st Qu.: 2.9980
## Median : 22188 Median :74.25 Median :16.798 Median : 3.8142
## Mean : 60973 Mean :73.97 Mean :18.273 Mean : 4.4473
## 3rd Qu.: 47541 3rd Qu.:77.20 3rd Qu.:20.550 3rd Qu.: 4.9493
## Max. :3291995 Max. :88.90 Max. :48.079 Max. :20.7913
## poppovertyknown percpovertyknown percbelowpoverty percchildbelowpover
## Min. : 1696 Min. :80.90 Min. : 2.180 Min. : 1.919
## 1st Qu.: 18364 1st Qu.:96.89 1st Qu.: 9.199 1st Qu.:11.624
## Median : 33788 Median :98.17 Median :11.822 Median :15.270
## Mean : 93642 Mean :97.11 Mean :12.511 Mean :16.447
## 3rd Qu.: 72840 3rd Qu.:98.60 3rd Qu.:15.133 3rd Qu.:20.352
## Max. :5023523 Max. :99.86 Max. :48.691 Max. :64.308
## percadultpoverty percelderlypoverty inmetro category
## Min. : 1.938 Min. : 3.547 Min. :0.0000 Length:437
## 1st Qu.: 7.668 1st Qu.: 8.912 1st Qu.:0.0000 Class :character
## Median :10.008 Median :10.869 Median :0.0000 Mode :character
## Mean :10.919 Mean :11.389 Mean :0.3432
## 3rd Qu.:13.182 3rd Qu.:13.412 3rd Qu.:1.0000
## Max. :43.312 Max. :31.162 Max. :1.0000
str(midwest)
## Classes 'tbl_df', 'tbl' and 'data.frame': 437 obs. of 28 variables:
## $ PID : int 561 562 563 564 565 566 567 568 569 570 .
## $ county : chr "ADAMS" "ALEXANDER" "BOND" "BOONE" ...
## $ state : chr "IL" "IL" "IL" "IL" ...
## $ area : num 0.052 0.014 0.022 0.017 0.018 0.05 0.017 0
## $ poptotal : int 66090 10626 14991 30806 5836 35688 5322 16
## $ popdensity : num 1271 759 681 1812 324 ...
## $ popwhite : int 63917 7054 14477 29344 5264 35157 5298 165
## $ popblack : int 1702 3496 429 127 547 50 1 111 16 16559 .
## $ popamerindian : int 98 19 35 46 14 65 8 30 8 331 ...
## $ popasian : int 249 48 16 150 5 195 15 61 23 8033 ...
## $ popother : int 124 9 34 1139 6 221 0 84 6 1596 ...
## $ percwhite : num 96.7 66.4 96.6 95.3 90.2 ...
## $ percblack : num 2.575 32.9 2.862 0.412 9.373 ...
## $ percamerindan : num 0.148 0.179 0.233 0.149 0.24 ...
## $ percasian : num 0.3768 0.4517 0.1067 0.4869 0.0857 ...
## $ percother : num 0.1876 0.0847 0.2268 3.6973 0.1028 ...
## $ popadults : int 43298 6724 9669 19272 3979 23444 3583 1132
## $ perchsd : num 75.1 59.7 69.3 75.5 68.9 ...
## $ percollege : num 19.6 11.2 17 17.3 14.5 ...
## $ percprof : num 4.36 2.87 4.49 4.2 3.37 ...
## $ poppovertyknown : int 63628 10529 14235 30337 4815 35107 5241 16
## $ percpovertyknown : num 96.3 99.1 95 98.5 82.5 ...
## $ percbelowpoverty : num 13.15 32.24 12.07 7.21 13.52 ...
## $ percchildbelowpovert: num 18 45.8 14 11.2 13 ...
## $ percadultpoverty : num 11.01 27.39 10.85 5.54 11.14 ...
## $ percelderlypoverty : num 12.44 25.23 12.7 6.22 19.2 ...
## $ inmetro : int 0 0 0 1 0 0 0 0 0 1 ...
## $ category : chr "AAR" "LHR" "AAR" "ALU" ...
head(midwest)
## # A tibble: 6 x 28
## PID county state area poptotal popdensity popwhite popblack popamer
## <int> <chr> <chr> <dbl> <int> <dbl> <int> <int>
## 1 561 ADAMS IL 0.052 66090 1271. 63917 1702
## 2 562 ALEXA~ IL 0.014 10626 759 7054 3496
## 3 563 BOND IL 0.022 14991 681. 14477 429
## 4 564 BOONE IL 0.017 30806 1812. 29344 127
## 5 565 BROWN IL 0.018 5836 324. 5264 547
## 6 566 BUREAU IL 0.05 35688 714. 35157 50
## # ... with 19 more variables: popasian <int>, popother <int>, percwhite
## # percblack <dbl>, percamerindan <dbl>, percasian <dbl>, percother <db
## # popadults <int>, perchsd <dbl>, percollege <dbl>, percprof <dbl>,
## # poppovertyknown <int>, percpovertyknown <dbl>, percbelowpoverty <dbl
## # percchildbelowpovert <dbl>, percadultpoverty <dbl>,
## # percelderlypoverty <dbl>, inmetro <int>, category <chr>
C O NT I NU A R
library(tidyr)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
df <- gather(midwest, "pop_category", "population", c(5:11, 17, 21))
df <- gather(df, "per_category", "pervalue", 5:17)
C O NT I NU A R
ggplot(data = df) +
geom_point(mapping = aes(x = pervalue, y = population))
C O NT I NU A R
La anterior gráfica muestra la representación del número de
población para cada valor porcentual del dataset.
C O NT I NU A R
De la primera gráfica, es importante destacar los componentes más importantes de una capa:
C O NT I NU A R
Lo siguiente que puede realizarse sobre la gráfica anterior es agregar color a la nube de puntos; para ello,
utilizamos el parámetro color.
ggplot(data = df) +
geom_point(mapping = aes(x = pervalue, y = population, color = state))
Figura 36. Agregar color a través de una variable categórica.
Fuente: elaboración propia.
C O NT I NU A R
También podemos utilizar un color cualquiera que no pertenezca a las variables, por
lo tanto, utilizamos el parámetro color fuera de “aes”.
ggplot(data = df) +
geom_point(mapping = aes(x = pervalue, y = population), color = "dodgerbl
C O NT I NU A R
Si en lugar de mostrar el color por país, se quiere mostrar el tamaño de punto en función del país, se utilizará
el parámetro size.
ggplot(data = df) +
geom_point(mapping = aes(x = pervalue, y = population, size = state))
## Warning: Using size for a discrete variable is not advised.
C O NT I NU A R
Existen otros parámetros que modifican la forma y el color de nuestra gráfica, como “alpha” y “shape”.
ggplot(data = df) +
geom_point(mapping = aes(x = pervalue, y = population, alpha = state))
## Warning: Using alpha for a discrete variable is not advised.
ggplot(data = df) +
geom_point(mapping = aes(x = pervalue, y = population, shape = state))
C O NT I NU A R
1 Gráfico de barras: es importante en este ejemplo destacar el uso de fill dentro de “aes” y color
como parámetro mapping.
ggplot(df) +
geom_bar(mapping = aes(state, fill = state), color = "black")
Figura 42. Gráfico de barras en Ggplot2.
Fuente: elaboración propia.
C O NT I NU A R
2 Boxplot: se pueden destacar los outliers con el parámetro “outlier.colour”. Se pueden voltear
los ejes en cualquier gráfico con “coord_flip”.
ggplot(df) +
geom_boxplot(mapping = aes(x = pervalue, fill = state), outlier.colour =
C O NT I NU A R
3 Diagrama de densidad: en algunas gráficas, el parámetro color no estará disponible, pero sí
colour. Se observa también que el uso de alpha aumenta o disminuye la transparencia del
interior de la gráfica. Este diagrama muestra la distribución de una variable continua.
ggplot(df) +
geom_density(mapping = aes(area), colour = "darkblue", fill = "darkblue",
ggplot(df) +
geom_density(mapping = aes(area, fill=state), colour = "darkblue", alpha
C O NT I NU A R
3 Histograma.
ggplot(df) +
geom_histogram(mapping = aes(area), color = "red", fill = "lightblue", al
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Figura 46. Histograma en Ggplot2.
Fuente: elaboración propia.
Las superficies de los Estados con área cercanas a 0,3 son las más predominantes.
C O NT I NU A R
C O NT I NU A R
Con el parámetro “binwidth” se puede definir la anchura de cada barra.
ggplot(df) +
geom_histogram(mapping = aes(area), color = "blue", binwidth = 0.02)
C O NT I NU A R
Con el parámetro bins se fuerza a mostrar un número fijo de barras verticales.
ggplot(df) +
geom_histogram(mapping = aes(area), color = "blue", bins=100)
C O NT I NU A R
ggplot(df, aes(area)) +
geom_histogram(aes(y=..density..), color = "blue", bins=100) +
geom_density(colour = "darkblue", fill = "pink", alpha = 0.4)
Figura 50. Histograma y función de densidad.
Fuente: elaboración propia.
C O NT I NU A R
Si se quiere que los valores de relleno no se agrupen en forma de frecuencia acumulada, se utilizará el
parámetro dodge con el valor identity.
ggplot(df) +
geom_histogram(mapping = aes(area, fill=state), color = "blue", position
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
C O NT I NU A R
ggplot(df) +
geom_histogram(mapping = aes(inmetro, fill=state), color = "blue", positi
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Figura 52. Histograma en el que cambia la disposición de las barras (II).
Fuente: elaboración propia.
C O NT I NU A R
ggplot(df) +
geom_histogram(mapping = aes(area, fill=state), color = "blue", position
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
C O NT I NU A R
ggplot(df) +
geom_freqpoly(mapping = aes(area, colour=state)) # fill no funciona
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Figura 54. Histograma en el que cambia el modo “freqpoly”.
Fuente: elaboración propia.
C O NT I NU A R
ggplot(df) +
geom_point(mapping = aes(population, area)) + geom_smooth(aes(population,
## `geom_smooth()` using method = 'gam' and formula 'y ~ s(x, bs = "cs")'
Figura 55. Gráfica X ~ Y con recta de ajuste.
Fuente: elaboración propia.
Podría afirmarse que las variables “población” y “área” no tienen correlación a simple
vista y, además, el modelo lineal está muy afectado por los outliers.
C O NT I NU A R
"ggtitle”
"xlab”
"ylab”
ggplot(df) +
geom_point(mapping = aes(population, area)) + geom_smooth(aes(population,
ggtitle("Población ~ área") +
xlab("Población") +
ylab("Área")
Figura 56. Añadir texto a una gráfica en Ggplot2.
Fuente: elaboración propia.
C O NT I NU A R
3.3 Facetting
Se puede descomponer una gráfica en tantas gráficas como valores únicos tenga una variable. Esto es muy
recomendable cuando se tienen variables categóricas, ya que se puede explicar una variable a través de una
categoría.
ggplot(df, mapping = aes(area)) +
geom_bar(aes(fill=state)) +
facet_wrap( ~ state)
Plotly1 es un paquete destinado a la creación de gráficos interactivos. Durante este apartado, se mostrará
tanto su instalación como la manera de realizar algunos gráficos simples
C O NT I NU A R
PLOTLY_HTML.zip
1.2 MB
PLOTLY_RMD.zip
1.9 KB
C O NT I NU A R
# install.packages("plotly")
library(plotly)
## Loading required package: ggplot2
##
## 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
C O NT I NU A R
C O NT I NU A R
Para realizar una visualización en Plotly, siempre se tiene que utilizar la función “plot_ly” y pasar nuestros
parámetros para dibujar los ejes “x” e “y”. En Plotly, se escoge el tipo de visualización a través del parámetro
type.
x <- c(1, 2, 3, 8, 7, 5, 6)
y <- c(4, 5, 6, 2, 10 ,12, 5)
C O NT I NU A R
Diagrama de dispersión
fig <- plot_ly (
x = x,
y = y,
type = "scatter"
)
fig
## No scatter mode specifed:
## Setting the mode to markers
## Read more about this attribute -> https://plot.ly/r/reference/#scatter
Además del tipo de gráfica, en Plotly (para algunos tipos de visualización) se puede elegir el modo, es decir,
si existiera algún patrón de unión entre las observaciones que se fueran a pintar, por ejemplo: puntos y
líneas. Este parámetro es mode.
fig.sizes
Figura 59. Diagrama de dispersión con Plotly (II).
Fuente: elaboración propia.
C O NT I NU A R
fig.line
Figura 60. Diagrama de dispersión con Plotly (III).
Fuente: elaboración propia.
C O NT I NU A R
fig.line
C O NT I NU A R
C O NT I NU A R
fig
## No scatter mode specifed:
## Setting the mode to markers
## Read more about this attribute -> https://plot.ly/r/reference/#scatter
## Warning: `line.width` does not currently support multiple values.
C O NT I NU A R
vec.1 <- c(1:100)
random_y <- rnorm(100, mean = 0)
fig
C O NT I NU A R
Diagrama de barras
fig.bar
Figura 64. Diagrama de barras (I).
Fuente: elaboración propia.
C O NT I NU A R
Como se puede comprobar, el parámetro “x” es tomado como índice y, por ello, el valor “4” está vacío. Este
hecho no afecta a los diagramas de barras con variables categóricas.
fig
C O NT I NU A R
fig.bar
C O NT I NU A R
A una gráfica ya existente, se le agrega la función layout, a la cual se le pasarán los siguientes parámetros:
title
–
Título de la gráfica.
"xaxis"
–
Lista con el atributo title. Si se quiere desactivar este componente, se otorgará valor “FALSE” al atributo
“showgrid”.
"yaxis"
–
Lista con el atributo title. Si se quiere desactivar este componente, se otorgará valor “FALSE” al atributo
“showgrid”.
C O NT I NU A R
fig
## Warning in RColorBrewer::brewer.pal(N, "Set2"): minimal value for n is 3
C O NT I NU A R
Histograma
Se mostrarán dos gráficas diferentes para un histograma. En el primer caso, una gráfica de un histograma
de forma individual; posteriormente, se realizará una ligera transformación sobre el vector “x” (un vector de
500 elementos de una distribución normal), creando un nuevo vector en el que se sume 1 a cada elemento
del vector “x”, de esta forma, aparecerán dos histogramas completamente diferentes en la misma gráfica.
Se aconseja al alumno probar diferentes parámetros de posición para cuando hay más de un histograma:
overlay, stack, group y relative.
C O NT I NU A R
C O NT I NU A R
fig
Figura 69. Histograma en Plotly (II).
Fuente: elaboración propia.
C O NT I NU A R
Boxplot
fig <- plot_ly(y = ~rnorm(50), type = "box") %>%
layout(title = "Boxplot",
xaxis = list(showgrid = FALSE),
yaxis = list(showgrid = FALSE))
fig
C O NT I NU A R
Diagrama de sectores
En un diagrama circular o diagrama de sectores, una variable se representa en forma de círculo y cada
valor de una variable tomará una porción del diagrama. En este caso, se representa como círculo el valor de
la longitud del sépalo y cada color será representado por el tipo de flor.
V. Resumen
A lo largo de esta unidad, se han mostrado las principales librerías de visualización de datos en R: desde
las funciones por defecto de graphics y las gráficas de capas con Ggplot2, hasta una introducción a la
realización de gráficos dinámicos en Plotly.
Por lo general, en todas las secciones se han tratado elementos similares, como la creación de gráficas
simples, añadir texto en los ejes y títulos, visualizar leyendas sobre los datos, agregación de color y
representación de diferentes tipos de gráficas, como diagramas de dispersión, gráficos de barras,
histogramas, boxplot, etc.
Lección 6 de 9
Enunciado
transformaciones4.
Gráficos básicos R: hacer un gráfico de barras con la cantidad de diamantes que hay para cada
valor de la variable cut.
Ggplot: realizar un histograma del precio que muestre la frecuencia acumulada de la variable cut.
Ggplot2: realizar un diagrama boxplot sobre el precio en función de la variable cut. Obtener un
diagrama diferente por cada variable clarity.
Gráficos básicos de R: realizar una gráfica múltiple de cuatro visualizaciones en donde, para cada
visualización, se realice un diagrama de dispersión en el que se tomen los valore: “x”, “y”, “z” y carat
contra depth.
Ggplot2: realizar un diagrama de dispersión con recta de ajuste del price sobre carat.
Plotly: tomar una muestra de 100 observaciones y realizar un diagrama de barras de la variable
cut contra price, en función de clarity.
VER SOLUCIÓN
Solución
EJERCICIO_1_SOLUCION_HTML.zip
1.4 MB
EJERCICIO_1_SOLUCION_RMD.zip
1.2 KB
Lección 7 de 9
ABRIR ENLACE
ABRIR ENLACE
ABRIR ENLACE
ABRIR ENLACE
R graph gallery.
Web en la que podemos encontrar diferentes plantillas con ejemplos de código de prácticamente
cualquier tipo de gráfico en R.
ABRIR ENLACE
Lección 8 de 9
VIII. Glosario
Graphics
–
Librería por defecto de R para visualización de datos.
Ggplot2
–
Librería dedicada a la creación y desarrollo de gráficos mediante la agregación de capas.
Plotly
–
Librería destinada a la creación de gráficos dinámicos y publicación de dashboards.
Diagrama de sectores
–
Visualización de datos en la que los valores categóricos se representan en torno a un círculo, y cada
categoría de una variable contiene valores de una variable continua.
Facetting
–
Mostrar la relación entre dos variables “x” e “y” en diferentes subgráficas en función de una tercera variable
categórica o valores únicos de una variable continua.
Lección 9 de 9
IX. Bibliografía
Chang, W. R graphics cookbook: practical recipes for visualizing data. O'Reilly Media; 2013.