Saltar al contenido

Gráfico 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 extracción de datos, la segunda parte discute limpiar y manipular los datos. Eventualmente, el científico de datos puede ser necesario expresar 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 objetivos del proyecto.
  • A continuación, una de las tareas más notables es la ingeniería de funciones. El científico de datos debe recopilar, manipular y limpiar los datos
  • Una vez que se completa este paso, puede comenzar a explorar el conjunto de datos. A veces, la hipótesis original debe refinarse y cambiarse debido a un nuevo descubrimiento.
  • Cuando el explicaciones se logra el análisis, el científico de datos debe evaluar la capacidad del lector comprender los conceptos y modelos básicos.
  • Sus hallazgos deben presentarse en un formato que sea entendido por todas las partes interesadas. Uno de los mejores métodos para comunicar es por un grafico.
  • Los gráficos son una herramienta increíble para simplificar análisis complejos.

En este tutorial, aprenderá:

paquete ggplot2

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

En este tutorial, usará el paquete ggplot2. Este paquete está construido sobre la base consistente del libro Grammar de gráficos escrito por Wilkinson, 2005. ggplot2 es muy flexible, incorpora muchos temas y especificación de tramas con un alto nivel de abstracción. Con ggplot2, puede trazar gráficos 3D y crear gráficos interactivos.

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

Aprenderá a controlar estos argumentos en el tutorial.

La sintaxis básica de ggplot2 es:


ggplot(data, mapping=aes()) +
geometric object 

arguments: 
data: Dataset used to plot the graph
mapping: Control the x and y-axis 
geometric 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 una variable drat.

Extensión básica de la parcela

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

Explicación del Código

Producción:

Diagrama de dispersión con grupos

A veces puede resultar interesante diferenciar los valores por 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

Producción:

Volver a su posición

La reprogramación de los datos es una gran parte del trabajo del científico de datos. Los detalles rara vez vienen en forma de un bonito reloj. Una solución para hacer que sus datos sean más sensibles para los migrantes es reprogramarlos.

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

Explicación del Código

Tenga en cuenta que se pueden implementar otras transformaciones, como la estandarización o la normalización.

Producción:

Gráfico disperso con valores ajustados

Puede agregar otro nivel de información al gráfico. Puede trazar el valor de ajuste 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

Producción:

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

Agregar información al gráfico

Hasta ahora, no hemos incluido 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 referencia a documentación adicional. Por tanto, los gráficos necesitan buenas etiquetas. Puede agregar etiquetas a una función de laboratorio ().

La sintaxis básica de un laboratorio () 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-axis			
Example:lab(title = "Hello Guru99", subtitle = "My first plot")	

Añade un titulo

Claramente, solo la información obligatoria es un título que debe agregarse.

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

Explicación del Código

Producción:

Ponle un título con un nombre dinámico

Un título dinámico es útil para agregar información más precisa al 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 <-2010
paste("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, mpg promedio.

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

Producción:

Añadir subtítulo

Dos detalles adicionales pueden hacer que su gráfico sea más transparente. Estás hablando de la leyenda y la leyenda. La leyenda va justo debajo del título. El subtítulo puede dar información sobre quién realizó 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

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 usen de forma rutinaria _ cuando hay varias palabras (es decir, GDP_CAP). No desea que ese nombre aparezca en su 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

Producción:

Control de escalas

Puede controlar la escala del eje.

La función seq () es útil 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 el paso 3, tendrá cuatro números, 0 4 8 12

seq(0, 12,4)

Producción:

## [1]  0  4  8 12	

Puede controlar el eje xy la escala 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

Producción:

tema

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

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. Coloca ggsave (‘NOMBRE DE 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 excelente gráfico, guárdelo y verifique el lugar

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")

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. Todo lo que tiene que hacer es ejecutar el código a continuación y ver dónde se almacena la imagen. Debería ver un archivo llamado my_fantastic_plot.png.


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

# Call the
function to open the folder open_folder(directory)

Resumen

Puede resumir los argumentos para crear una gráfica en la siguiente tabla:

Propósito

Código

Extensión básica de la parcela

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

Parcela dispersa con un 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ñade un titulo

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

Añadir 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")

Control de 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()

Ahorrar

ggsave("my_fantastic_plot.png")