ggplot2 - Guía rápida
ggplot2 es un paquete R que está diseñado especialmente para la visualización de datos y proporciona el mejor análisis exploratorio de datos. Proporciona tramas hermosas y sin complicaciones que se ocupan de detalles minuciosos, como dibujar leyendas y representarlas. Los gráficos se pueden crear de forma iterativa y editarlos más tarde. Este paquete está diseñado para funcionar en capas, comenzando con una capa que muestra los datos sin procesar recopilados durante el análisis de datos exploratorios con R y luego agregando capas de anotaciones y resúmenes estadísticos.
Incluso los usuarios de R más experimentados necesitan ayuda para crear gráficos elegantes. Esta biblioteca es una herramienta fenomenal para crear gráficos en R, pero incluso después de muchos años de uso casi diario, todavía necesitamos consultar nuestra Hoja de referencia.
Este paquete funciona bajo una gramática profunda llamada "Gramática de gráficos", que se compone de un conjunto de componentes independientes que se pueden crear de muchas formas. La “gramática de los gráficos” es la única razón que hace que ggplot2 sea muy poderoso porque el desarrollador de R no se limita a un conjunto de gráficos preespecificados que se utilizan en otros paquetes. La gramática incluye un conjunto simple de reglas y principios básicos.
En el año 2005, Wilkinson creó o más bien originó el concepto de gramática de gráficos para describir las características profundas que se incluyen entre todos los gráficos estadísticos. Se centra en la capa primaria que incluye la adaptación de características incrustadas con R.
Relación entre "Gramática de los gráficos" y R
Le dice al usuario o desarrollador que se utiliza un gráfico estadístico para mapear los datos con atributos estéticos como el color, la forma, el tamaño de los objetos geométricos en cuestión, como puntos, líneas y barras. El gráfico también puede contener varias transformaciones estadísticas de los datos en cuestión que se dibujan en el sistema de coordenadas mencionado. También incluye una función denominada "Facetado" que generalmente se utiliza para crear el mismo gráfico para diferentes subconjuntos del conjunto de datos mencionado. R incluye varios conjuntos de datos integrados. La combinación de estos componentes independientes comprende totalmente un gráfico particular.
Ahora centrémonos en diferentes tipos de tramas que se pueden crear con referencia a la gramática:
Datos
Si el usuario desea visualizar el conjunto dado de mapeos estéticos que describe cómo se mapean las variables requeridas en los datos para la creación de atributos estéticos mapeados.
Capas
Está compuesto por elementos geométricos y la transformación estadística requerida. Las capas incluyen objetos geométricos, geoms para datos cortos que realmente representan la trama con la ayuda de puntos, líneas, polígonos y muchos más. La mejor demostración es agrupar y contar las observaciones para crear el histograma específico para resumir la relación 2D de un modelo lineal específico.
Escamas
Las escalas se utilizan para mapear valores en el espacio de datos que se utiliza para la creación de valores, ya sea de color, tamaño y forma. Ayuda a dibujar una leyenda o ejes que se necesitan para proporcionar un mapeo inverso que hace posible leer los valores de datos originales de la gráfica mencionada.
Sistema coordinado
Describe cómo las coordenadas de datos se mapean juntas al plano mencionado del gráfico. También proporciona información de los ejes y las líneas de cuadrícula que se necesitan para leer el gráfico. Normalmente se utiliza como un sistema de coordenadas cartesianas que incluye coordenadas polares y proyecciones de mapas.
Facetas
Incluye especificaciones sobre cómo dividir los datos en subconjuntos necesarios y mostrar los subconjuntos como múltiplos de datos. Esto también se denomina proceso de acondicionamiento o enrejado.
Tema
Controla los puntos más finos de la visualización, como el tamaño de fuente y las propiedades del color de fondo. Para crear una trama atractiva, siempre es mejor considerar las referencias.
Ahora, también es igualmente importante discutir las limitaciones o características que la gramática no proporciona:
Carece de la sugerencia de qué gráficos deben usarse o qué le interesa hacer al usuario.
No describe la interactividad ya que solo incluye una descripción de gráficos estáticos. Para la creación de gráficos dinámicos se debe aplicar otra solución alternativa.
El gráfico simple creado con ggplot2 se menciona a continuación:
Los paquetes R vienen con varias capacidades como analizar información estadística o realizar una investigación en profundidad de datos geoespaciales o simplemente podemos crear informes básicos.
Los paquetes de R se pueden definir como funciones, datos y código compilado de R en un formato bien definido. La carpeta o directorio donde se almacenan los paquetes se llama biblioteca.
Como se puede ver en la figura anterior, libPaths () es la función que muestra la biblioteca que se encuentra, y la biblioteca de funciones muestra los paquetes que están guardados en la biblioteca.
R incluye varias funciones que manipulan los paquetes. Nos centraremos en tres funciones principales que se utilizan principalmente, son:
- Instalación del paquete
- Cargando un paquete
- Aprendiendo sobre el paquete
La sintaxis con función para instalar un paquete en R es:
Install.packages(“<package-name>”)
La demostración simple de la instalación de un paquete es visible a continuación. Considere que necesitamos instalar el paquete "ggplot2" que es una biblioteca de visualización de datos, se usa la siguiente sintaxis:
Install.packages(“ggplot2”)
Para cargar el paquete en particular, debemos seguir la sintaxis que se menciona a continuación:
Library(<package-name>)
Lo mismo se aplica para ggplot2 como se menciona a continuación:
library(“ggplot2”)
La salida se muestra en la instantánea a continuación:
Para comprender la necesidad del paquete requerido y la funcionalidad básica, R proporciona una función de ayuda que brinda los detalles completos del paquete que está instalado.
La sintaxis completa se menciona a continuación:
help(ggplot2)
En este capítulo, nos centraremos en crear un diagrama simple con la ayuda de ggplot2. Usaremos los siguientes pasos para crear la gráfica predeterminada en R.
Inclusión de biblioteca y conjunto de datos en el espacio de trabajo
Incluya la biblioteca en R. Cargando el paquete que se necesita. Ahora nos centraremos en el paquete ggplot2.
# Load ggplot2
library(ggplot2)
Implementaremos un conjunto de datos llamado "Iris". El conjunto de datos contiene 3 clases de 50 instancias cada una, donde cada clase se refiere a un tipo de planta de iris. Una clase es linealmente separable de las otras dos; estos últimos NO son linealmente separables entre sí.
# Read in dataset
data(iris)
La lista de atributos que se incluye en el conjunto de datos se da a continuación:
Usar atributos para la gráfica de muestra
Trazar el gráfico del conjunto de datos del iris con ggplot2 de una manera más simple implica la siguiente sintaxis:
# Plot
IrisPlot <- ggplot(iris, aes(Sepal.Length, Petal.Length, colour=Species))
+ geom_point()
print(IrisPlot)
El primer parámetro toma el conjunto de datos como entrada, el segundo parámetro menciona la leyenda y los atributos que deben trazarse en la base de datos. En este ejemplo, usamos la leyenda Species. Geom_point () implica un diagrama de dispersión que se discutirá en detalle en el capítulo posterior.
La salida generada se menciona a continuación:
Aquí podemos modificar el título, la etiqueta xy la etiqueta y, lo que significa etiquetas de eje xy eje y en formato sistemático como se indica a continuación:
print(IrisPlot + labs(y="Petal length (cm)", x = "Sepal length (cm)")
+ ggtitle("Petal and sepal length of iris"))
Cuando hablamos de ejes en gráficos, se trata de ejes xey que se representan de forma bidimensional. En este capítulo, nos centraremos en dos conjuntos de datos "Plantgrowth" e "Iris", que suelen utilizar los científicos de datos.
Implementar ejes en el conjunto de datos Iris
Usaremos los siguientes pasos para trabajar en los ejes xey usando el paquete ggplot2 de R.
Siempre es importante cargar la biblioteca para obtener las funcionalidades de package.
# Load ggplot
library(ggplot2)
# Read in dataset
data(iris)
Creando los puntos de la trama
Como se discutió en el capítulo anterior, crearemos un gráfico con puntos. En otras palabras, se define como parcela dispersa.
# Plot
p <- ggplot(iris, aes(Sepal.Length, Petal.Length, colour=Species)) + geom_point()
p
Ahora entendamos la funcionalidad de aes que menciona la estructura de mapeo de "ggplot2". Los mapeos estéticos describen la estructura variable que se necesita para trazar y los datos que deben gestionarse en formato de capa individual.
La salida se da a continuación:
Resaltar y marcar marcas
Trace los marcadores con las coordenadas mencionadas de los ejes xey como se menciona a continuación. Incluye agregar texto, repetir texto, resaltar un área particular y agregar un segmento de la siguiente manera:
# add text
p + annotate("text", x = 6, y = 5, label = "text")
# add repeat
p + annotate("text", x = 4:6, y = 5:7, label = "text")
# highlight an area
p + annotate("rect", xmin = 5, xmax = 7, ymin = 4, ymax = 6, alpha = .5)
# segment
p + annotate("segment", x = 5, xend = 7, y = 4, yend = 5, colour = "black")
La salida generada para agregar texto se da a continuación:
La repetición de un texto particular con las coordenadas mencionadas genera el siguiente resultado. El texto se genera con coordenadas x de 4 a 6 y coordenadas y de 5 a 7 -
La segmentación y el resaltado de la salida de un área particular se dan a continuación:
Conjunto de datos PlantGrowth
Ahora centrémonos en trabajar con otro conjunto de datos llamado "Plantgrowth" y el paso que se necesita se da a continuación.
Llame a la biblioteca y compruebe los atributos de “Plantgrowth”. Este conjunto de datos incluye los resultados de un experimento para comparar los rendimientos (medidos por el peso seco de las plantas) obtenidos bajo un control y dos condiciones de tratamiento diferentes.
> PlantGrowth
weight group
1 4.17 ctrl
2 5.58 ctrl
3 5.18 ctrl
4 6.11 ctrl
5 4.50 ctrl
6 4.61 ctrl
7 5.17 ctrl
8 4.53 ctrl
9 5.33 ctrl
10 5.14 ctrl
11 4.81 trt1
12 4.17 trt1
13 4.41 trt1
14 3.59 trt1
15 5.87 trt1
16 3.83 trt1
17 6.03 trt1
Agregar atributos con ejes
Intente trazar una gráfica simple con los ejes xey requeridos del gráfico como se menciona a continuación:
> bp <- ggplot(PlantGrowth, aes(x=group, y=weight)) +
+ geom_point()
> bp
La salida generada se da a continuación:
Finalmente, podemos deslizar los ejes xey según nuestro requisito con la función básica que se menciona a continuación:
> bp <- ggplot(PlantGrowth, aes(x=group, y=weight)) +
+ geom_point()
> bp
Básicamente, podemos usar muchas propiedades con asignaciones estéticas para trabajar con ejes usando ggplot2.
Los ejes y las leyendas se denominan colectivamente como guías. Nos permiten leer las observaciones del gráfico y mapearlas con respecto a los valores originales. Las claves de leyenda y las etiquetas de graduación están determinadas por los saltos de escala. Las leyendas y los ejes se producen automáticamente en función de las respectivas escalas y geoms que se necesitan para la trama.
Se implementarán los siguientes pasos para comprender el funcionamiento de las leyendas en ggplot2:
Inclusión de paquete y conjunto de datos en el espacio de trabajo
Creemos el mismo gráfico para enfocarnos en la leyenda del gráfico generado con ggplot2 -
> # Load ggplot
> library(ggplot2)
>
> # Read in dataset
> data(iris)
>
> # Plot
> p <- ggplot(iris, aes(Sepal.Length, Petal.Length, colour=Species)) + geom_point()
> p
Si observa la trama, las leyendas se crean en la mayoría de las esquinas izquierdas como se menciona a continuación:
Aquí, la leyenda incluye varios tipos de especies del conjunto de datos dado.
Cambio de atributos para leyendas
Podemos eliminar la leyenda con la ayuda de la propiedad "legend.position" y obtenemos el resultado apropiado:
> # Remove Legend
> p + theme(legend.position="none")
También podemos ocultar el título de la leyenda con la propiedad "element_blank ()" como se indica a continuación:
> # Hide the legend title
> p + theme(legend.title=element_blank())
También podemos usar la posición de la leyenda cuando sea necesario. Esta propiedad se utiliza para generar una representación gráfica precisa.
> #Change the legend position
> p + theme(legend.position="top")
>
> p + theme(legend.position="bottom")
Top representation
Bottom representation
Cambiar el estilo de fuente de las leyendas
Podemos cambiar el estilo de fuente y el tipo de fuente del título y otros atributos de la leyenda como se menciona a continuación:
> #Change the legend title and text font styles
> # legend title
> p + theme(legend.title = element_text(colour = "blue", size = 10, + face = "bold"))
> # legend labels
> p + theme(legend.text = element_text(colour = "red", size = 8, + face = "bold"))
La salida generada se da a continuación:
Los próximos capítulos se centrarán en varios tipos de gráficos con varias propiedades de fondo como el color, los temas y la importancia de cada uno de ellos desde el punto de vista de la ciencia de datos.
Los gráficos de dispersión son similares a los gráficos de líneas que se utilizan generalmente para trazar. Los gráficos de dispersión muestran cuánto se relaciona una variable con otra. La relación entre variables se denomina correlación, que generalmente se usa en métodos estadísticos. Usaremos el mismo conjunto de datos llamado "Iris" que incluye mucha variación entre cada variable. Este es un famoso conjunto de datos que da medidas en centímetros de las variables longitud y ancho del sépalo con largo y ancho del pétalo para 50 flores de cada una de las 3 especies de iris. Las especies se llaman Iris setosa, versicolor y virginica.
Creación de un diagrama de dispersión básico
Los siguientes pasos están involucrados para crear diagramas de dispersión con el paquete "ggplot2":
Para crear un diagrama de dispersión básico se ejecuta el siguiente comando:
> # Basic Scatter Plot
> ggplot(iris, aes(Sepal.Length, Petal.Length)) +
+ geom_point()
Agregar atributos
Podemos cambiar la forma de los puntos con una propiedad llamada forma en la función geom_point ().
> # Change the shape of points
> ggplot(iris, aes(Sepal.Length, Petal.Length)) +
+ geom_point(shape=1)
Podemos agregar color a los puntos que se agrega en los diagramas de dispersión requeridos.
> ggplot(iris, aes(Sepal.Length, Petal.Length, colour=Species)) +
+ geom_point(shape=1)
En este ejemplo, hemos creado colores según las especies que se mencionan en las leyendas. Las tres especies se distinguen de forma única en la parcela mencionada.
Ahora nos centraremos en establecer relación entre las variables.
> ggplot(iris, aes(Sepal.Length, Petal.Length, colour=Species)) +
+ geom_point(shape=1) +
+ geom_smooth(method=lm)
geom_smooth La función ayuda al patrón de superposición y crea el patrón de variables requeridas.
El método de atributo "lm" menciona la línea de regresión que debe desarrollarse.
> # Add a regression line
> ggplot(iris, aes(Sepal.Length, Petal.Length, colour=Species)) +
+ geom_point(shape=1) +
+ geom_smooth(method=lm)
También podemos agregar una línea de regresión sin región de confianza sombreada con la sintaxis mencionada a continuación:
># Add a regression line but no shaded confidence region
> ggplot(iris, aes(Sepal.Length, Petal.Length, colour=Species)) +
+ geom_point(shape=1) +
+ geom_smooth(method=lm, se=FALSE)
Las regiones sombreadas representan cosas distintas a las regiones de confianza.
Gráficos de jitter
Los gráficos de fluctuación incluyen efectos especiales con los que se pueden representar gráficos dispersos. Jitter no es más que un valor aleatorio que se asigna a los puntos para separarlos como se menciona a continuación:
> ggplot(mpg, aes(cyl, hwy)) +
+ geom_point() +
+ geom_jitter(aes(colour = class))
Los gráficos de barras representan los datos categóricos de manera rectangular. Las barras se pueden trazar vertical y horizontalmente. Las alturas o longitudes son proporcionales a los valores representados en los gráficos. Los ejes xey de los gráficos de barras especifican la categoría que se incluye en el conjunto de datos específico.
El histograma es un gráfico de barras que representa los datos sin procesar con una imagen clara de la distribución del conjunto de datos mencionado.
En este capítulo, nos centraremos en la creación de gráficos de barras e histogramas con la ayuda de ggplot2.
Comprensión del conjunto de datos de MPG
Entendamos el conjunto de datos que se utilizará. El conjunto de datos de mpg contiene un subconjunto de los datos de economía de combustible que la EPA pone a disposición en el siguiente enlace:
Consiste en modelos que tuvieron un nuevo lanzamiento cada año entre 1999 y 2008. Esto se usó como un indicador de la popularidad del automóvil.
Se ejecuta el siguiente comando para comprender la lista de atributos que se necesitan para el conjunto de datos.
> library(ggplot2)
El paquete adjunto es ggplot2.
El siguiente objeto está enmascarado _by_ .GlobalEnv -
mpg
Mensajes de advertencia
- arules del paquete fue construido bajo R versión 3.5.1
- el paquete tuneR fue construido bajo la versión 3.5.3 de R
- El paquete ggplot2 se creó con la versión 3.5.3 de R
Creación de un gráfico de recuento de barras
El gráfico de recuento de barras se puede crear con el gráfico mencionado a continuación:
> # A bar count plot
> p <- ggplot(mpg, aes(x=factor(cyl)))+
+ geom_bar(stat="count")
> p
geom_bar () es la función que se utiliza para crear diagramas de barras. Toma el atributo de valor estadístico llamado recuento.
Histograma
El gráfico de recuento del histograma se puede crear con el gráfico mencionado a continuación:
> # A historgram count plot
> ggplot(data=mpg, aes(x=hwy)) +
+ geom_histogram( col="red",
+ fill="green",
+ alpha = .2,
+ binwidth = 5)
geom_histogram () incluye todos los atributos necesarios para crear un histograma. Aquí, toma el atributo de carretera con el conteo respectivo. El color se toma según los requisitos.
Gráfico de barras apiladas
Los diagramas generales de gráficos de barras e histograma se pueden crear como se muestra a continuación:
> p <- ggplot(mpg, aes(class))
> p + geom_bar()
> p + geom_bar()
Este gráfico incluye todas las categorías definidas en gráficos de barras con la clase respectiva. Este gráfico se llama gráfico apilado.
Un gráfico circular se considera un gráfico estadístico circular, que se divide en porciones para ilustrar la proporción numérica. En el gráfico circular mencionado, la longitud del arco de cada rebanada es proporcional a la cantidad que representa. La longitud del arco representa el ángulo del gráfico circular. Los grados totales del gráfico circular son 360 grados. El semicírculo o gráfico semicircular consta de 180 grados.
Crear gráficos circulares
Cargue el paquete en el espacio de trabajo mencionado como se muestra a continuación:
> # Load modules
> library(ggplot2)
>
> # Source: Frequency table
> df <- as.data.frame(table(mpg$class))
> colnames(df) <- c("class", "freq")
El gráfico de muestra se puede crear usando el siguiente comando:
> pie <- ggplot(df, aes(x = "", y=freq, fill = factor(class))) +
+ geom_bar(width = 1, stat = "identity") +
+ theme(axis.line = element_blank(),
+ plot.title = element_text(hjust=0.5)) +
+ labs(fill="class",
+ x=NULL,
+ y=NULL,
+ title="Pie Chart of class",
+ caption="Source: mpg")
> pie
Si observa la salida, el diagrama no se crea de manera circular como se menciona a continuación:
Creando coordenadas
Ejecutemos el siguiente comando para crear el gráfico circular requerido de la siguiente manera:
> pie + coord_polar(theta = "y", start=0)
En este capítulo, analizaremos las gráficas marginales.
Comprensión de las gráficas marginales
Las gráficas marginales se utilizan para evaluar la relación entre dos variables y examinar sus distribuciones. Cuando hablamos de crear diagramas marginales, no son más que diagramas de dispersión que tienen histogramas, diagramas de caja o diagramas de puntos en los márgenes de los respectivos ejes x e y.
Los siguientes pasos se utilizarán para crear una gráfica marginal con R usando el paquete “ggExtra”. Este paquete está diseñado para mejorar las características del paquete "ggplot2" e incluye varias funciones para crear gráficos marginales exitosos.
Paso 1
Instale el paquete "ggExtra" usando el siguiente comando para una ejecución exitosa (si el paquete no está instalado en su sistema).
> install.packages("ggExtra")
Paso 2
Incluya las bibliotecas necesarias en el espacio de trabajo para crear gráficos marginales.
> library(ggplot2)
> library(ggExtra)
Paso 3
Leyendo el conjunto de datos requerido “mpg” que hemos usado en capítulos anteriores.
> data(mpg)
> head(mpg)
# A tibble: 6 x 11
manufacturer model displ year cyl trans drv cty hwy fl class
<chr> <chr> <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
1 audi a4 1.8 1999 4 auto(l5) f 18 29 p compa~
2 audi a4 1.8 1999 4 manual(m5) f 21 29 p compa~
3 audi a4 2 2008 4 manual(m6) f 20 31 p compa~
4 audi a4 2 2008 4 auto(av) f 21 30 p compa~
5 audi a4 2.8 1999 6 auto(l5) f 16 26 p compa~
6 audi a4 2.8 1999 6 manual(m5) f 18 26 p compa~
>
Etapa 4
Ahora creemos una gráfica simple usando “ggplot2” que nos ayudará a entender el concepto de gráficas marginales.
> #Plot
> g <- ggplot(mpg, aes(cty, hwy)) +
+ geom_count() +
+ geom_smooth(method="lm", se=F)
> g
Relación entre variables
Ahora creemos los gráficos marginales usando la función ggMarginal que ayuda a generar la relación entre dos atributos "hwy" y "cty".
> ggMarginal(g, type = "histogram", fill="transparent")
> ggMarginal(g, type = "boxplot", fill="transparent")
La salida de los gráficos marginales de histograma se menciona a continuación:
El resultado de las gráficas marginales de caja se menciona a continuación:
Los diagramas de burbujas no son más que gráficos de burbujas que son básicamente un diagrama de dispersión con una tercera variable numérica utilizada para el tamaño del círculo. En este capítulo, nos centraremos en la creación de gráficos de recuento de barras y de histogramas, que se consideran una réplica de los gráficos de burbujas.
Los siguientes pasos se utilizan para crear gráficos de burbujas y contar gráficos con el paquete mencionado:
Entendiendo el conjunto de datos
Cargue el paquete respectivo y el conjunto de datos requerido para crear los gráficos de burbujas y los gráficos de conteo.
> # Load ggplot
> library(ggplot2)
>
> # Read in dataset
> data(mpg)
> head(mpg)
# A tibble: 6 x 11
manufacturer model displ year cyl trans drv cty hwy fl class
<chr> <chr> <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
1 audi a4 1.8 1999 4 auto(l5) f 18 29 p compa~
2 audi a4 1.8 1999 4 manual(m5) f 21 29 p compa~
3 audi a4 2 2008 4 manual(m6) f 20 31 p compa~
4 audi a4 2 2008 4 auto(av) f 21 30 p compa~
5 audi a4 2.8 1999 6 auto(l5) f 16 26 p compa~
6 audi a4 2.8 1999 6 manual(m5) f 18 26 p compa~
El gráfico de recuento de barras se puede crear usando el siguiente comando:
> # A bar count plot
> p <- ggplot(mpg, aes(x=factor(cyl)))+
+ geom_bar(stat="count")
> p
Análisis con histogramas
El gráfico de recuento del histograma se puede crear usando el siguiente comando:
> # A historgram count plot
> ggplot(data=mpg, aes(x=hwy)) +
+ geom_histogram( col="red",
+ fill="green",
+ alpha = .2,
+ binwidth = 5)
Gráficos de burbujas
Ahora creemos el diagrama de burbujas más básico con los atributos requeridos de aumentar la dimensión de los puntos mencionados en el diagrama de dispersión.
ggplot(mpg, aes(x=cty, y=hwy, size = pop)) +geom_point(alpha=0.7)
El gráfico describe la naturaleza de los fabricantes que se incluye en formato de leyenda. Los valores representados incluyen varias dimensiones del atributo "hwy".
En los capítulos anteriores, echamos un vistazo a varios tipos de gráficos que se pueden crear usando el paquete "ggplot2". Ahora nos centraremos en la variación de los mismos, como gráficos de barras divergentes, gráficos de paleta y muchos más. Para empezar, comenzaremos con la creación de gráficos de barras divergentes y los pasos a seguir se mencionan a continuación:
Comprender el conjunto de datos
Cargue el paquete requerido y cree una nueva columna llamada 'nombre del automóvil' dentro del conjunto de datos de mpg.
#Load ggplot
> library(ggplot2)
> # create new column for car names
> mtcars$`car name` <- rownames(mtcars)
> # compute normalized mpg
> mtcars$mpg_z <- round((mtcars$mpg - mean(mtcars$mpg))/sd(mtcars$mpg), 2)
> # above / below avg flag
> mtcars$mpg_type <- ifelse(mtcars$mpg_z < 0, "below", "above")
> # sort
> mtcars <- mtcars[order(mtcars$mpg_z), ]
El cálculo anterior implica la creación de una nueva columna para los nombres de los coches, calculando el conjunto de datos normalizado con la ayuda de la función redonda. También podemos usar el indicador de promedio por encima y por debajo para obtener los valores de la funcionalidad "tipo". Luego, ordenamos los valores para crear el conjunto de datos requerido.
La salida recibida es la siguiente:
Convierta los valores en factor para mantener el orden ordenado en un gráfico en particular como se menciona a continuación:
> # convert to factor to retain sorted order in plot.
> mtcars$`car name` <- factor(mtcars$`car name`, levels = mtcars$`car name`)
El resultado obtenido se menciona a continuación:
Gráfico de barras divergentes
Ahora cree un gráfico de barras divergentes con los atributos mencionados que se toman como coordenadas requeridas.
> # Diverging Barcharts
> ggplot(mtcars, aes(x=`car name`, y=mpg_z, label=mpg_z)) +
+ geom_bar(stat='identity', aes(fill=mpg_type), width=.5) +
+ scale_fill_manual(name="Mileage",
+ labels = c("Above Average", "Below Average"),
+ values = c("above"="#00ba38", "below"="#f8766d")) +
+ labs(subtitle="Normalised mileage from 'mtcars'",
+ title= "Diverging Bars") +
+ coord_flip()
Note - Un gráfico de barras divergente marca para algunos miembros de dimensión que apuntan hacia arriba o hacia abajo con respecto a los valores mencionados.
La salida del gráfico de barras divergentes se menciona a continuación, donde usamos la función geom_bar para crear un gráfico de barras:
Gráfico de piruletas divergentes
Cree un gráfico de piruletas divergentes con los mismos atributos y coordenadas con solo el cambio de función que se utilizará, es decir, geom_segment () que ayuda a crear los gráficos de piruletas.
> ggplot(mtcars, aes(x=`car name`, y=mpg_z, label=mpg_z)) +
+ geom_point(stat='identity', fill="black", size=6) +
+ geom_segment(aes(y = 0,
+ x = `car name`,
+ yend = mpg_z,
+ xend = `car name`),
+ color = "black") +
+ geom_text(color="white", size=2) +
+ labs(title="Diverging Lollipop Chart",
+ subtitle="Normalized mileage from 'mtcars': Lollipop") +
+ ylim(-2.5, 2.5) +
+ coord_flip()
Gráfico de puntos divergentes
Cree un diagrama de puntos divergentes de manera similar donde los puntos representan los puntos en diagramas dispersos en una dimensión mayor.
> ggplot(mtcars, aes(x=`car name`, y=mpg_z, label=mpg_z)) +
+ geom_point(stat='identity', aes(col=mpg_type), size=6) +
+ scale_color_manual(name="Mileage",
+ labels = c("Above Average", "Below Average"),
+ values = c("above"="#00ba38", "below"="#f8766d")) +
+ geom_text(color="white", size=2) +
+ labs(title="Diverging Dot Plot",
+ subtitle="Normalized mileage from 'mtcars': Dotplot") +
+ ylim(-2.5, 2.5) +
+ coord_flip()
Aquí, las leyendas representan los valores "Por encima del promedio" y "Por debajo del promedio" con distintos colores de verde y rojo. El diagrama de puntos transmite información estática. Los principios son los mismos que los del gráfico de barras divergentes, excepto que solo se utilizan puntos.
En este capítulo, nos centraremos en el uso de un tema personalizado que se utiliza para cambiar la apariencia del espacio de trabajo. Usaremos el paquete "ggthemes" para comprender el concepto de gestión de temas en el espacio de trabajo de R.
Implementemos los siguientes pasos para usar el tema requerido dentro del conjunto de datos mencionado.
GGTHEMES
Instale el paquete "ggthemes" con el paquete requerido en el espacio de trabajo de R.
> install.packages("ggthemes")
> Library(ggthemes)
Implementar nuevo tema para generar leyendas de fabricantes con año de producción y desplazamiento.
> library(ggthemes)
> ggplot(mpg, aes(year, displ, color=factor(manufacturer)))+
+ geom_point()+ggtitle("This plot looks a lot different from the default")+
+ theme_economist()+scale_colour_economist()
Se puede observar que el tamaño predeterminado del texto del tick, leyendas y otros elementos es un poco pequeño con la gestión previa del tema. Es increíblemente fácil cambiar el tamaño de todos los elementos de texto a la vez. Esto se puede hacer creando un tema personalizado que podemos observar en el paso siguiente que los tamaños de todos los elementos son relativos (rel ()) al tamaño_base.
> theme_set(theme_gray(base_size = 30))
> ggplot(mpg, aes(x=year, y=class))+geom_point(color="red")
Los gráficos de paneles múltiples significan la creación de gráficos de varios gráficos juntos en un solo gráfico. Usaremos la función par () para poner múltiples gráficos en un solo gráfico pasando los parámetros gráficos mfrow y mfcol.
Aquí usaremos el conjunto de datos "AirQuality" para implementar gráficos de paneles múltiples. Primero entendamos el conjunto de datos para echar un vistazo a la creación de gráficos de paneles múltiples. Este conjunto de datos incluye Contiene las respuestas de un dispositivo multisensor de gas desplegado en el campo en una ciudad italiana. Los promedios de respuestas por hora se registran junto con las referencias de concentraciones de gas de un analizador certificado.
Visión de la función par ()
Comprenda la función par () para crear una dimensión de los diagramas de paneles múltiples necesarios.
> par(mfrow=c(1,2))
> # set the plotting area into a 1*2 array
Esto crea un gráfico en blanco con una dimensión de 1 * 2.
Ahora cree el gráfico de barras y el gráfico circular del conjunto de datos mencionado usando el siguiente comando. Este mismo fenómeno se puede lograr con el parámetro gráfico mfcol.
Creación de gráficos de paneles múltiples
La única diferencia entre los dos es que, mfrow llena la región de la subplot por filas, mientras que mfcol la llena por columnas.
> Temperature <- airquality$Temp
> Ozone <- airquality$Ozone
> par(mfrow=c(2,2))
> hist(Temperature)
> boxplot(Temperature, horizontal=TRUE)
> hist(Ozone)
> boxplot(Ozone, horizontal=TRUE)
Los diagramas de caja y los diagramas de barras se crean en una sola ventana, básicamente creando diagramas de varios paneles.
La misma gráfica con un cambio de dimensiones en la función par se vería de la siguiente manera:
par(mfcol = c(2, 2))
En este capítulo, nos centraremos en la creación de múltiples parcelas que se pueden utilizar más para crear parcelas tridimensionales. La lista de parcelas que se cubrirán incluye:
- Gráfico de densidad
- Diagrama de caja
- Gráfica de puntos
- Trama de violín
Usaremos el conjunto de datos “mpg” como se usó en capítulos anteriores. Este conjunto de datos proporciona datos de economía de combustible de 1999 y 2008 para 38 modelos populares de automóviles. El conjunto de datos se envía con el paquete ggplot2. Es importante seguir el paso mencionado a continuación para crear diferentes tipos de parcelas.
> # Load Modules
> library(ggplot2)
>
> # Dataset
> head(mpg)
# A tibble: 6 x 11
manufacturer model displ year cyl trans drv cty hwy fl class
<chr> <chr> <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
1 audi a4 1.8 1999 4 auto(l5) f 18 29 p compa~
2 audi a4 1.8 1999 4 manual(m5) f 21 29 p compa~
3 audi a4 2 2008 4 manual(m6) f 20 31 p compa~
4 audi a4 2 2008 4 auto(av) f 21 30 p compa~
5 audi a4 2.8 1999 6 auto(l5) f 16 26 p compa~
6 audi a4 2.8 1999 6 manual(m5) f 18 26 p compa~
Gráfico de densidad
Una gráfica de densidad es una representación gráfica de la distribución de cualquier variable numérica en el conjunto de datos mencionado. Utiliza una estimación de densidad de kernel para mostrar la función de densidad de probabilidad de la variable.
El paquete “ggplot2” incluye una función llamada geom_density () para crear una gráfica de densidad.
Ejecutaremos el siguiente comando para crear una gráfica de densidad:
> p −- ggplot(mpg, aes(cty)) +
+ geom_density(aes(fill=factor(cyl)), alpha=0.8)
> p
Podemos observar varias densidades de la gráfica creada a continuación:
Podemos crear la trama cambiando el nombre de los ejes xey, lo que mantiene una mejor claridad con la inclusión de títulos y leyendas con diferentes combinaciones de colores.
> p + labs(title="Density plot",
+ subtitle="City Mileage Grouped by Number of cylinders",
+ caption="Source: mpg",
+ x="City Mileage",
+ fill="# Cylinders")
Diagrama de caja
El diagrama de caja, también llamado diagrama de caja y bigotes, representa el resumen de datos de cinco números. Los resúmenes de cinco números incluyen valores como mínimo, primer cuartil, mediana, tercer cuartil y máximo. La línea vertical que pasa por la parte media del diagrama de caja se considera "mediana".
Podemos crear un diagrama de caja usando el siguiente comando:
> p <- ggplot(mpg, aes(class, cty)) +
+ geom_boxplot(varwidth=T, fill="blue")
> p + labs(title="A Box plot Example",
+ subtitle="Mileage by Class",
+ caption="MPG Dataset",
+ x="Class",
+ y="Mileage")
>p
Aquí, estamos creando un diagrama de caja con respecto a los atributos de clase y cty.
Gráfica de puntos
Los gráficos de puntos son similares a los gráficos dispersos con solo una diferencia de dimensión. En esta sección, agregaremos un diagrama de puntos al diagrama de caja existente para tener una mejor imagen y claridad.
El diagrama de caja se puede crear usando el siguiente comando:
> p <- ggplot(mpg, aes(manufacturer, cty)) +
+ geom_boxplot() +
+ theme(axis.text.x = element_text(angle=65, vjust=0.6))
> p
El diagrama de puntos se crea como se menciona a continuación:
> p + geom_dotplot(binaxis='y',
+ stackdir='center',
+ dotsize = .5
+ )
Trama de violín
La trama de violín también se crea de manera similar con solo cambio de estructura de violines en lugar de caja. La salida se menciona claramente a continuación:
> p <- ggplot(mpg, aes(class, cty))
>
> p + geom_violin()
Hay formas de cambiar el aspecto completo de su trama con una función como se menciona a continuación. Pero si simplemente desea cambiar el color de fondo del panel, puede usar lo siguiente:
Implementación del fondo del panel
Podemos cambiar el color de fondo usando el siguiente comando que ayuda a cambiar el panel (panel.background):
> ggplot(iris, aes(Sepal.Length, Species))+geom_point(color="firebrick")+
+ theme(panel.background = element_rect(fill = 'grey75'))
El cambio de color se muestra claramente en la siguiente imagen:
Implementando Panel.grid.major
Podemos cambiar las líneas de la cuadrícula usando la propiedad "panel.grid.major" como se menciona en el comando a continuación:
> ggplot(iris, aes(Sepal.Length, Species))+geom_point(color="firebrick")+
+ theme(panel.background = element_rect(fill = 'grey75'),
+ panel.grid.major = element_line(colour = "orange", size=2),
+ panel.grid.minor = element_line(colour = "blue"))
Incluso podemos cambiar el fondo de la trama, especialmente excluyendo el panel usando la propiedad "plot.background" como se menciona a continuación:
ggplot(iris, aes(Sepal.Length, Species))+geom_point(color="firebrick")+
+ theme(plot.background = element_rect(fill = 'pink'))
Una serie de tiempo es un gráfico que representa la serie de puntos de datos en un orden de tiempo específico. Una serie de tiempo es una secuencia tomada con una secuencia en puntos sucesivos de igual espaciado. Las series de tiempo se pueden considerar como datos de tiempo discreto. El conjunto de datos que usaremos en este capítulo es el conjunto de datos de “economía” que incluye todos los detalles de las series de tiempo económicas de EE. UU.
El marco de datos incluye los siguientes atributos que se mencionan a continuación:
Fecha | Mes de recopilación de datos |
Psavert | Tasa de ahorro personal |
Pce | Gasto de consumo personal |
Desempleo | Número de desempleados en miles |
Unempmed | Duración media del desempleo |
Popular | Población total en miles |
Cargue los paquetes necesarios y configure el tema predeterminado para crear una serie de tiempo.
> library(ggplot2)
> theme_set(theme_minimal())
> # Demo dataset
> head(economics)
# A tibble: 6 x 6
date pce pop psavert uempmed unemploy
<date> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1967-07-01 507. 198712 12.6 4.5 2944
2 1967-08-01 510. 198911 12.6 4.7 2945
3 1967-09-01 516. 199113 11.9 4.6 2958
4 1967-10-01 512. 199311 12.9 4.9 3143
5 1967-11-01 517. 199498 12.8 4.7 3066
6 1967-12-01 525. 199657 11.8 4.8 3018
Cree una gráfica de línea básica que cree una estructura de serie de tiempo.
> # Basic line plot
> ggplot(data = economics, aes(x = date, y = pop))+
+ geom_line(color = "#00AFBB", size = 2)
Podemos trazar el subconjunto de datos usando el siguiente comando:
> # Plot a subset of the data
> ss <- subset(economics, date > as.Date("2006-1-1"))
> ggplot(data = ss, aes(x = date, y = pop)) +
+ geom_line(color = "#FC4E07", size = 2)
Creación de series de tiempo
Aquí trazaremos las variables psavert y uempmed por fechas. Aquí debemos remodelar los datos usando el paquete tidyr. Esto se puede lograr colapsando los valores psavert y uempmed en la misma columna (nueva columna). Función R: recopilar () [tidyr]. El siguiente paso consiste en crear una variable de agrupación que con niveles = psavert y uempmed.
> library(tidyr)
> library(dplyr)
Attaching package: ‘dplyr’
The following object is masked from ‘package:ggplot2’: vars
The following objects are masked from ‘package:stats’: filter, lag
The following objects are masked from ‘package:base’: intersect, setdiff, setequal, union
> df <- economics %>%
+ select(date, psavert, uempmed) %>%
+ gather(key = "variable", value = "value", -date)
> head(df, 3)
# A tibble: 3 x 3
date variable value
<date> <chr> <dbl>
1 1967-07-01 psavert 12.6
2 1967-08-01 psavert 12.6
3 1967-09-01 psavert 11.9
Cree un gráfico de varias líneas con el siguiente comando para ver la relación entre "psavert" y "unmpmed":
> ggplot(df, aes(x = date, y = value)) +
+ geom_line(aes(color = variable), size = 1) +
+ scale_color_manual(values = c("#00AFBB", "#E7B800")) +
+ theme_minimal()