Diagrama de dispersión en R usando ggplot2 (con ejemplo)

Los gráficos son la tercera parte del proceso de análisis de datos. La primera parte trata sobre la extracción de datos , la segunda parte trata de limpiar y manipular los datos . Por último, el científico de datos puede necesitar comunicar sus resultados gráficamente .

El trabajo del científico de datos se puede revisar en la siguiente imagen

  • La primera tarea de un científico de datos es definir una pregunta de investigación. Esta pregunta de investigación depende de los objetivos y metas del proyecto.
  • Después de eso, una de las tareas más destacadas es la ingeniería de funciones. El científico de datos necesita recopilar, manipular y limpiar los datos
  • Cuando se completa este paso, puede comenzar a explorar el conjunto de datos. A veces, es necesario refinar y cambiar la hipótesis original debido a un nuevo descubrimiento.

  • Cuando se logra el análisis explicativo , el científico de datos debe considerar la capacidad del lector para comprender los conceptos y modelos subyacentes .
  • Sus resultados deben presentarse en un formato que todas las partes interesadas puedan comprender. Uno de los mejores métodos para comunicar los resultados es mediante un gráfico .
  • Los gráficos son una herramienta increíble para simplificar análisis complejos.

En este tutorial, aprenderá:

  • paquete ggplot2
  • Gráfico de dispersión
  • Cambiar eje
  • Gráfico de dispersión con valores ajustados
  • Agregar información al gráfico
  • Cambiar el nombre del eje xy del eje y
  • Controla las escalas
  • Tema
  • Guardar parcelas

paquete ggplot2

Esta parte del tutorial se centra en cómo hacer gráficos / tablas con R.

En este tutorial, usará el paquete ggplot2. Este paquete se basa en la base coherente del libro Grammar of graphics escrito por Wilkinson, 2005. ggplot2 es muy flexible, incorpora muchos temas y especificación de la trama con un alto nivel de abstracción. Con ggplot2, no puede trazar gráficos tridimensionales y crear gráficos interactivos.

En ggplot2, un gráfico se compone de los siguientes argumentos:

  • datos
  • mapeo estético
  • objeto geométrico
  • transformaciones estadísticas
  • escamas
  • sistema coordinado
  • ajustes de posición
  • facetado

Aprenderá a controlar esos argumentos en el tutorial.

La sintaxis básica de ggplot2 es:

ggplot(data, mapping=aes()) +geometric objectarguments:data: Dataset used to plot the graphmapping: Control the x and y-axisgeometric object: The type of plot you want to show. The most common object are:- Point: `geom_point()`- Bar: `geom_bar()`- Line: `geom_line()`- Histogram: `geom_histogram()`

Gráfico de dispersión

Veamos cómo funciona ggplot con el conjunto de datos mtcars. Empiece trazando un diagrama de dispersión de la variable mpg y la variable drat.

Gráfico de dispersión básico

library(ggplot2)ggplot(mtcars, aes(x = drat, y = mpg)) +geom_point()

Explicación del código

  • Primero pasa el conjunto de datos mtcars a ggplot.
  • Dentro del argumento aes (), agrega el eje xy el eje y.
  • El signo + significa que desea que R siga leyendo el código. Hace que el código sea más legible al romperlo.
  • Utilice geom_point () para el objeto geométrico.

Producción:

Diagrama de dispersión con grupos

A veces, puede ser interesante distinguir los valores por un grupo de datos (es decir, datos a nivel de factor).

ggplot(mtcars, aes(x = mpg, y = drat)) +geom_point(aes(color = factor(gear)))

Explicación del código

  • El aes () dentro de geom_point () controla el color del grupo. El grupo debe ser un factor variable. Por lo tanto, convierte la marcha variable en un factor.
  • En total, tienes el código aes (color = factor (engranaje)) que cambia el color de los puntos.

Producción:

Cambiar eje

Cambiar la escala de los datos es una gran parte del trabajo del científico de datos. En raras ocasiones, los datos vienen en forma de campana agradable. Una solución para hacer que sus datos sean menos sensibles a los valores atípicos es cambiar su escala.

ggplot(mtcars, aes(x = log(mpg), y = log(drat))) +geom_point(aes(color = factor(gear)))

Explicación del código

  • Transforma las variables xey en log () directamente dentro del mapeo aes ().

Tenga en cuenta que se puede aplicar cualquier otra transformación, como la estandarización o la normalización.

Producción:

Gráfico de dispersión con valores ajustados

Puede agregar otro nivel de información al gráfico. Puede trazar el valor ajustado de una regresión lineal.

my_graph <- ggplot(mtcars, aes(x = log(mpg), y = log(drat))) +geom_point(aes(color = factor(gear))) +stat_smooth(method = "lm",col = "#C42126",se = FALSE,size = 1)my_graph

Explicación del código

  • gráfico: almacena su gráfico en el gráfico variable. Es útil para un uso posterior o para evitar líneas de códigos demasiado complejas.
  • El argumento stat_smooth () controla el método de suavizado
  • method = "lm": regresión lineal
  • col = "# C42126": Código para el color rojo de la línea
  • se = FALSE: no muestra el error estándar
  • size = 1: el tamaño de la línea es 1

Producción:

Tenga en cuenta que hay otros métodos de suavizado disponibles

  • glm
  • juego
  • loess: valor predeterminado
  • borde

Agregar información al gráfico

Hasta ahora, no hemos agregado información en los gráficos. Los gráficos deben ser informativos. El lector debería ver la historia detrás del análisis de datos con solo mirar el gráfico sin consultar documentación adicional. Por lo tanto, los gráficos necesitan buenas etiquetas. Puede agregar etiquetas con la función labs ().

La sintaxis básica de lab () es:

lab(title = "Hello Guru99")argument:- title: Control the title. It is possible to change or add title with:- subtitle: Add subtitle below title- caption: Add caption below the graph- x: rename x-axis- y: rename y-axisExample:lab(title = "Hello Guru99", subtitle = "My first plot")

Añade un titulo

Una información obligatoria para agregar es, obviamente, un título.

my_graph +labs(title = "Plot Mile per hours and drat, in log")

Explicación del código

  • my_graph: utiliza el gráfico que almacenó. Evita reescribir todos los códigos cada vez que agrega nueva información al gráfico.
  • Envuelve el título dentro del lab ().
  • Código para el color rojo de la línea.
  • se = FALSE: no muestra el error estándar
  • size = 1: el tamaño de la línea es 1

Producción:

Agrega un título con un nombre dinámico

Un título dinámico es útil para agregar información más precisa en el título.

Puede utilizar la función paste () para imprimir texto estático y texto dinámico. La sintaxis básica de paste () es:

paste("This is a text", A)arguments- " ": Text inside the quotation marks are the static text- A: Display the variable stored in A- Note you can add as much static text and variable as you want. You need to separate them with a comma

Ejemplo:

A <-2010paste("The first year is", A)

Producción:

## [1] "The first year is 2010"
B <-2018

paste("The first year is", A, "and the last year is", B)

Producción:

## [1] "The first year is 2010 and the last year is 2018" 

Puede agregar un nombre dinámico a nuestro gráfico, es decir, el promedio de mpg.

mean_mpg <- mean(mtcars$mpg)my_graph + labs(title = paste("Plot Mile per hours and drat, in log. Average mpg is", mean_mpg))

Explicación del código

  • Creas el promedio de mpg con mean (mtcars $ mpg) almacenado en la variable mean_mpg
  • Utiliza paste () con mean_mpg para crear un título dinámico que devuelve el valor medio de mpg

Producción:

Agregar un subtítulo

Dos detalles adicionales pueden hacer que su gráfico sea más explícito. Estás hablando del subtítulo y la leyenda. El subtítulo va justo debajo del título. El título puede informar sobre quién hizo el cálculo y la fuente de los datos.

my_graph +labs(title ="Relation between Mile per hours and drat",subtitle ="Relationship break down by gear class",caption = "Authors own computation")

Explicación del código

  • Dentro del laboratorio (), agregó:
    • title = "Relación entre Milla por hora y drat": Agregar título
    • subtitle = "Relación desglosada por clase de equipo": agregar subtítulo
    • caption = "Cálculo propio de los autores: añadir título
    • Separa cada nueva información con una coma,
  • Tenga en cuenta que rompe las líneas de código. No es obligatorio y solo ayuda a leer el código más fácilmente

Producción:

Cambiar el nombre del eje xy del eje y

Es posible que las propias variables del conjunto de datos no siempre sean explícitas o, por convención, utilicen _ cuando hay varias palabras (es decir, GDP_CAP). No quieres que ese nombre aparezca en tu gráfico. Es importante cambiar el nombre o agregar más detalles, como las unidades.

my_graph +labs(x = "Drat definition",y = "Mile per hours",color = "Gear",title = "Relation between Mile per hours and drat",subtitle = "Relationship break down by gear class",caption = "Authors own computation")

Explicación del código

  • Dentro del laboratorio (), agregó:
    • x = "Drat definition": cambia el nombre del eje x
    • y = "Milla por hora": cambia el nombre del eje y

Producción:

Controla las escalas

Puede controlar la escala del eje.

La función seq () es conveniente cuando necesita crear una secuencia de números. La sintaxis básica es:

seq(begin, last, by = x)arguments:- begin: First number of the sequence- last: Last number of the sequence- by= x: The step. For instance, if x is 2, the code adds 2 to `begin-1` until it reaches `last`

Por ejemplo, si desea crear un rango de 0 a 12 con un paso de 3, tendrá cuatro números, 0 4 8 12

seq(0, 12,4)

Producción:

## [1] 0 4 8 12 

Puede controlar la escala del eje xy del eje y como se muestra a continuación

my_graph +scale_x_continuous(breaks = seq(1, 3.6, by = 0.2)) +scale_y_continuous(breaks = seq(1, 1.6, by = 0.1)) +labs(x = "Drat definition",y = "Mile per hours",color = "Gear",title = "Relation between Mile per hours and drat",subtitle = "Relationship break down by gear class",caption = "Authors own computation")

Explicación del código

  • La función scale_y_continuous () controla el eje y
  • La función scale_x_continuous () controla el eje x .
  • El parámetro break controla la división del eje. Puede agregar manualmente la secuencia de números o usar la función seq ():
    • seq (1, 3.6, by = 0.2): Cree seis números de 2.4 a 3.4 con un paso de 3
    • seq (1, 1.6, by = 0.1): Cree siete números del 1 al 1.6 con un paso de 1

Producción:

Tema

Finalmente, R nos permite personalizar la trama con diferentes temas. La biblioteca ggplot2 incluye ocho temas:

  • theme_bw ()
  • theme_light ()
  • theme_classis ()
  • theme_linedraw ()
  • theme_dark ()
  • theme_minimal ()
  • theme_gray ()
  • theme_void ()
my_graph +theme_dark() +labs(x = "Drat definition, in log",y = "Mile per hours, in log",color = "Gear",title = "Relation between Mile per hours and drat",subtitle = "Relationship break down by gear class",caption = "Authors own computation")

Producción:

Guardar parcelas

Después de todos estos pasos, es hora de guardar y compartir su gráfico. Agrega ggsave ('NOMBRE DEL ARCHIVO) justo después de trazar el gráfico y se almacenará en el disco duro.

El gráfico se guarda en el directorio de trabajo. Para verificar el directorio de trabajo, puede ejecutar este código:

directory <-getwd()directory 

Tracemos su gráfico fantástico, lo guarde y verifiquemos la ubicación

my_graph +theme_dark() +labs(x = "Drat definition, in log",y = "Mile per hours, in log",color = "Gear",title = "Relation between Mile per hours and drat",subtitle = "Relationship break down by gear class",caption = "Authors own computation")

Producción:

ggsave("my_fantastic_plot.png.webp")

Producción:

## Saving 5 x 4 in image

Nota : Solo con fines pedagógicos, creamos una función llamada open_folder () para abrir la carpeta del directorio por usted. Solo necesita ejecutar el código a continuación y ver dónde se almacena la imagen. Debería ver un archivo con el nombre my_fantastic_plot.png.webp.

# Run this code to create thefunctionopen_folder <- function(dir) {if (.Platform['OS.type'] == "windows") {shell.exec(dir)} else {system(paste(Sys.getenv("R_BROWSER"), dir))}}# Call thefunction to open the folder open_folder(directory)

Resumen

Puede resumir los argumentos para crear un diagrama de dispersión en la siguiente tabla:

Objetivo

Código

Gráfico de dispersión básico

ggplot(df, aes(x = x1, y = y)) + geom_point()

Diagrama de dispersión con grupo de colores

ggplot(df, aes(x = x1, y = y)) + geom_point(aes(color = factor(x1)) + stat_smooth(method = "lm")

Agregar valores ajustados

ggplot(df, aes(x = x1, y = y)) + geom_point(aes(color = factor(x1))

Añadir título

ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(title = paste("Hello Guru99"))

Agregar subtítulo

ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(subtitle = paste("Hello Guru99"))

Cambiar el nombre de x

ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(x = "X1")

Cambiar nombre y

ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(y = "y1")

Controla la escala

ggplot(df, aes(x = x1, y = y)) + geom_point() + scale_y_continuous(breaks = seq(10, 35, by = 10)) + scale_x_continuous(breaks = seq(2, 5, by = 1)

Crear registros

ggplot(df, aes(x =log(x1), y = log(y))) + geom_point()

Tema

ggplot(df, aes(x = x1, y = y)) + geom_point() + theme_classic()

Salvar

ggsave("my_fantastic_plot.png.webp")

Articulos interesantes...