Nuage de points dans R en utilisant ggplot2 (avec exemple)

Table des matières:

Anonim

Les graphiques constituent la troisième partie du processus d'analyse des données. La première partie concerne l'extraction des données , la deuxième partie traite du nettoyage et de la manipulation des données . Enfin, le data scientist devra peut-être communiquer graphiquement ses résultats .

Le travail du data scientist peut être revu dans l'image suivante

  • La première tâche d'un data scientist est de définir une question de recherche. Cette question de recherche dépend des objectifs et des buts du projet.
  • Après cela, l'une des tâches les plus importantes est l'ingénierie des fonctionnalités. Le data scientist doit collecter, manipuler et nettoyer les données
  • Lorsque cette étape est terminée, il peut commencer à explorer l'ensemble de données. Parfois, il est nécessaire d'affiner et de modifier l'hypothèse d'origine en raison d'une nouvelle découverte.

  • Lorsque l' analyse explicative est réalisée, le data scientist doit considérer la capacité du lecteur à comprendre les concepts et modèles sous-jacents .
  • Ses résultats doivent être présentés dans un format que toutes les parties prenantes peuvent comprendre. L'une des meilleures méthodes pour communiquer les résultats consiste à utiliser un graphique .
  • Les graphiques sont un outil incroyable pour simplifier les analyses complexes.

Dans ce didacticiel, vous apprendrez-

  • Paquet ggplot2
  • Nuage de points
  • Changer d'axe
  • Nuage de points avec valeurs ajustées
  • Ajouter des informations au graphique
  • Renommer l'axe des x et l'axe des y
  • Contrôlez les balances
  • Thème
  • Enregistrer les tracés

Paquet ggplot2

Cette partie du didacticiel se concentre sur la création de graphiques / diagrammes avec R.

Dans ce tutoriel, vous allez utiliser le package ggplot2. Ce paquet est construit sur le sous-jacent cohérent du livre Grammar of graphics écrit par Wilkinson, 2005. ggplot2 est très flexible, incorpore de nombreux thèmes et spécification de tracé à un haut niveau d'abstraction. Avec ggplot2, vous ne pouvez pas tracer de graphiques en 3 dimensions et créer des graphiques interactifs.

Dans ggplot2, un graphe est composé des arguments suivants:

  • Les données
  • cartographie esthétique
  • objet géométrique
  • transformations statistiques
  • Balance
  • système de coordonnées
  • ajustements de position
  • facettage

Vous apprendrez à contrôler ces arguments dans le didacticiel.

La syntaxe de base de ggplot2 est:

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()`

Nuage de points

Voyons comment ggplot fonctionne avec le jeu de données mtcars. Vous commencez par tracer un nuage de points de la variable mpg et de la variable drat.

Nuage de points de base

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

Explication du code

  • Vous transmettez d'abord le jeu de données mtcars à ggplot.
  • À l'intérieur de l'argument aes (), vous ajoutez l'axe des x et l'axe des y.
  • Le signe + signifie que vous voulez que R continue à lire le code. Cela rend le code plus lisible en le cassant.
  • Utilisez geom_point () pour l'objet géométrique.

Production:

Nuage de points avec des groupes

Parfois, il peut être intéressant de distinguer les valeurs par un groupe de données (c'est-à-dire des données au niveau des facteurs).

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

Explication du code

  • L'aes () à l'intérieur de geom_point () contrôle la couleur du groupe. Le groupe doit être une variable factorielle. Ainsi, vous convertissez l'engrenage variable en un facteur.
  • Au total, vous avez le code aes (couleur = facteur (engrenage)) qui change la couleur des points.

Production:

Changer d'axe

La redimensionnement des données est une grande partie du travail du data scientist. Dans de rares occasions, les données se présentent sous la forme d'une jolie cloche. Une solution pour rendre vos données moins sensibles aux valeurs aberrantes consiste à les redimensionner.

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

Explication du code

  • Vous transformez les variables x et y dans log () directement dans le mappage aes ().

Notez que toute autre transformation peut être appliquée telle que la standardisation ou la normalisation.

Production:

Nuage de points avec valeurs ajustées

Vous pouvez ajouter un autre niveau d'informations au graphique. Vous pouvez tracer la valeur ajustée d'une régression linéaire.

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

Explication du code

  • graphe: vous stockez votre graphe dans le graphe variable. Il est utile pour une utilisation ultérieure ou pour éviter les lignes de codes trop complexes
  • L'argument stat_smooth () contrôle la méthode de lissage
  • method = "lm": régression linéaire
  • col = "# C42126": Code de la couleur rouge de la ligne
  • se = FALSE: ne pas afficher l'erreur standard
  • size = 1: la taille de la ligne est 1

Production:

Notez que d'autres méthodes de lissage sont disponibles

  • glm
  • gam
  • loess: valeur par défaut
  • jante

Ajouter des informations au graphique

Jusqu'à présent, nous n'avons pas ajouté d'informations dans les graphiques. Les graphiques doivent être informatifs. Le lecteur devrait voir l'histoire derrière l'analyse des données simplement en regardant le graphique sans consulter de documentation supplémentaire. Par conséquent, les graphiques ont besoin de bonnes étiquettes. Vous pouvez ajouter des étiquettes avec la fonction labs ().

La syntaxe de base de lab () est:

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

Ajouter un titre

Une information obligatoire à ajouter est évidemment un titre.

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

Explication du code

  • my_graph: Vous utilisez le graphique que vous avez stocké. Cela évite de réécrire tous les codes à chaque fois que vous ajoutez de nouvelles informations au graphique.
  • Vous enveloppez le titre dans le laboratoire ().
  • Code pour la couleur rouge de la ligne
  • se = FALSE: ne pas afficher l'erreur standard
  • size = 1: la taille de la ligne est 1

Production:

Ajouter un titre avec un nom dynamique

Un titre dynamique est utile pour ajouter des informations plus précises dans le titre.

Vous pouvez utiliser la fonction paste () pour imprimer du texte statique et du texte dynamique. La syntaxe de base de paste () est:

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

Exemple:

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

Production:

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

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

Production:

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

Vous pouvez ajouter un nom dynamique à notre graphique, à savoir la moyenne 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))

Explication du code

  • Vous créez la moyenne de mpg avec la moyenne (mtcars $ mpg) stockée dans la variable mean_mpg
  • Vous utilisez le paste () avec mean_mpg pour créer un titre dynamique renvoyant la valeur moyenne de mpg

Production:

Ajouter un sous-titre

Deux détails supplémentaires peuvent rendre votre graphique plus explicite. Vous parlez du sous-titre et de la légende. Le sous-titre va juste en dessous du titre. La légende peut indiquer qui a effectué le calcul et la source des données.

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

Explication du code

  • Dans le laboratoire (), vous avez ajouté:
    • title = "Relation entre Mile par heure et drat": Ajouter un titre
    • subtitle = "Relation ventilée par classe d'équipement": Ajouter un sous-titre
    • caption = "Calcul des auteurs: ajouter une légende
    • Vous séparez chaque nouvelle information par une virgule,,
  • Notez que vous coupez les lignes de code. Ce n'est pas obligatoire, et cela aide seulement à lire le code plus facilement

Production:

Renommer l'axe des x et l'axe des y

Les variables elles-mêmes dans l'ensemble de données peuvent ne pas toujours être explicites ou, par convention, utiliser le _ lorsqu'il y a plusieurs mots (c'est-à-dire GDP_CAP). Vous ne voulez pas qu'un tel nom apparaisse dans votre graphique. Il est important de changer le nom ou d'ajouter plus de détails, comme les unités.

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

Explication du code

  • Dans le laboratoire (), vous avez ajouté:
    • x = "Drat definition": Changer le nom de l'axe des x
    • y = "Mile per hour": changer le nom de l'axe y

Production:

Contrôlez les balances

Vous pouvez contrôler l'échelle de l'axe.

La fonction seq () est pratique lorsque vous devez créer une séquence de nombres. La syntaxe de base est:

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`

Par exemple, si vous souhaitez créer une plage de 0 à 12 avec un pas de 3, vous aurez quatre nombres, 0 4 8 12

seq(0, 12,4)

Production:

## [1] 0 4 8 12 

Vous pouvez contrôler l'échelle de l'axe x et de l'axe y comme ci-dessous

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

Explication du code

  • La fonction scale_y_continuous () contrôle l' axe y
  • La fonction scale_x_continuous () contrôle l' axe des x .
  • Le paramètre breaks contrôle la division de l'axe. Vous pouvez ajouter manuellement la séquence de nombres ou utiliser la fonction seq ():
    • seq (1, 3,6, par = 0,2): Créez six nombres de 2,4 à 3,4 avec un pas de 3
    • seq (1, 1.6, by = 0.1): Créez sept nombres de 1 à 1.6 avec un pas de 1

Production:

Thème

Enfin, R nous permet de personnaliser l'intrigue avec différents thèmes. La bibliothèque ggplot2 comprend huit thèmes:

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

Production:

Enregistrer les tracés

Après toutes ces étapes, il est temps d'enregistrer et de partager votre graphique. Vous ajoutez ggsave ('NOM DU FICHIER) juste après avoir tracé le graphique et il sera stocké sur le disque dur.

Le graphique est enregistré dans le répertoire de travail. Pour vérifier le répertoire de travail, vous pouvez exécuter ce code:

directory <-getwd()directory 

Tracez votre fantastique graphique, enregistrez-le et vérifiez l'emplacement

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

Production:

ggsave("my_fantastic_plot.png.webp")

Production:

## Saving 5 x 4 in image

Remarque : à des fins pédagogiques uniquement, nous avons créé une fonction appelée open_folder () pour ouvrir le dossier du répertoire pour vous. Il vous suffit d'exécuter le code ci-dessous et de voir où l'image est stockée. Vous devriez voir un fichier nommé 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)

Résumé

Vous pouvez résumer les arguments pour créer un nuage de points dans le tableau ci-dessous:

Objectif

Code

Nuage de points de base

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

Nuage de points avec groupe de couleurs

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

Ajouter des valeurs ajustées

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

Ajouter un titre

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

Ajouter un sous-titre

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

Renommer x

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

Renommer y

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

Contrôlez la balance

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)

Créer des journaux

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

Thème

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

Sauvegarder

ggsave("my_fantastic_plot.png.webp")