Grafico a dispersione in R usando ggplot2 (con esempio)

Sommario:

Anonim

I grafici sono la terza parte del processo di analisi dei dati. La prima parte riguarda l'estrazione dei dati , la seconda si occupa della pulizia e della manipolazione dei dati . Alla fine, il data scientist potrebbe aver bisogno di comunicare i suoi risultati graficamente .

Il lavoro del data scientist può essere rivisto nella figura seguente

  • Il primo compito di un data scientist è definire una domanda di ricerca. Questa domanda di ricerca dipende dagli obiettivi e dagli obiettivi del progetto.
  • Successivamente, uno dei compiti più importanti è l'ingegneria delle funzionalità. Il data scientist deve raccogliere, manipolare e pulire i dati
  • Quando questo passaggio è completato, può iniziare a esplorare il set di dati. A volte, è necessario affinare e modificare l'ipotesi originale a causa di una nuova scoperta.

  • Una volta ottenuta l' analisi esplicativa , il data scientist deve considerare la capacità del lettore di comprendere i concetti ei modelli sottostanti .
  • I suoi risultati dovrebbero essere presentati in un formato comprensibile a tutte le parti interessate. Uno dei metodi migliori per comunicare i risultati è attraverso un grafico .
  • I grafici sono uno strumento incredibile per semplificare analisi complesse.

In questo tutorial imparerai-

  • pacchetto ggplot2
  • Scatterplot
  • Cambia asse
  • Grafico a dispersione con valori adattati
  • Aggiungi informazioni al grafico
  • Rinomina l'asse xe l'asse y
  • Controlla la bilancia
  • Tema
  • Salva grafici

pacchetto ggplot2

Questa parte del tutorial si concentra su come creare grafici / grafici con R.

In questo tutorial, utilizzerai il pacchetto ggplot2. Questo pacchetto è costruito sulla base coerente del libro Grammar of graphics scritto da Wilkinson, 2005. ggplot2 è molto flessibile, incorpora molti temi e specifiche della trama ad un alto livello di astrazione. Con ggplot2, non puoi stampare grafici tridimensionali e creare grafici interattivi.

In ggplot2, un grafico è composto dai seguenti argomenti:

  • dati
  • mappatura estetica
  • oggetto geometrico
  • trasformazioni statistiche
  • bilancia
  • sistema di coordinate
  • regolazioni di posizione
  • sfaccettatura

Imparerai come controllare questi argomenti nel tutorial.

La sintassi di base di ggplot2 è:

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

Scatterplot

Vediamo come funziona ggplot con il dataset mtcars. Inizi tracciando un grafico a dispersione della variabile mpg e della variabile drat.

Grafico a dispersione di base

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

Spiegazione del codice

  • Per prima cosa si passa il set di dati mtcars a ggplot.
  • All'interno dell'argomento aes (), aggiungi l'asse xe l'asse y.
  • Il segno + significa che vuoi che R continui a leggere il codice. Rende il codice più leggibile interrompendolo.
  • Usa geom_point () per l'oggetto geometrico.

Produzione:

Trama a dispersione con gruppi

A volte può essere interessante distinguere i valori in base a un gruppo di dati (cioè dati a livello di fattore).

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

Spiegazione del codice

  • La aes () all'interno di geom_point () controlla il colore del gruppo. Il gruppo dovrebbe essere una variabile fattore. Quindi, converti la marcia variabile in un fattore.
  • Complessivamente, hai il codice aes (color = factor (gear)) che cambia il colore dei punti.

Produzione:

Cambia asse

Il ridimensionamento dei dati è una parte importante del lavoro di data scientist. In rare occasioni i dati hanno una bella forma a campana. Una soluzione per rendere i dati meno sensibili ai valori anomali è riscalarli.

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

Spiegazione del codice

  • Trasformate le variabili xey in log () direttamente all'interno della mappatura aes ().

Si noti che qualsiasi altra trasformazione può essere applicata come la standardizzazione o la normalizzazione.

Produzione:

Grafico a dispersione con valori adattati

Puoi aggiungere un altro livello di informazioni al grafico. È possibile tracciare il valore adattato di una regressione lineare.

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

Spiegazione del codice

  • grafico: memorizzi il tuo grafico nel grafico variabile. È utile per un ulteriore utilizzo o evitare linee di codici troppo complesse
  • L'argomento stat_smooth () controlla il metodo smoothing
  • method = "lm": regressione lineare
  • col = "# C42126": codice per il colore rosso della linea
  • se = FALSE: non visualizza l'errore standard
  • size = 1: la dimensione della linea è 1

Produzione:

Notare che sono disponibili altri metodi di levigatura

  • glm
  • gam
  • loess: valore predefinito
  • cerchio

Aggiungi informazioni al grafico

Finora non abbiamo aggiunto informazioni nei grafici. I grafici devono essere informativi. Il lettore dovrebbe vedere la storia dietro l'analisi dei dati semplicemente guardando il grafico senza fare riferimento a documentazione aggiuntiva. Quindi, i grafici hanno bisogno di buone etichette. Puoi aggiungere etichette con la funzione labs ().

La sintassi di base per lab () è:

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

Aggiungi un titolo

Un'informazione obbligatoria da aggiungere è ovviamente un titolo.

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

Spiegazione del codice

  • my_graph: usi il grafico che hai memorizzato. Evita di riscrivere tutti i codici ogni volta che aggiungi nuove informazioni al grafico.
  • Inserisci il titolo all'interno del lab ().
  • Codice per il colore rosso della linea
  • se = FALSE: non visualizza l'errore standard
  • size = 1: la dimensione della linea è 1

Produzione:

Aggiungi un titolo con un nome dinamico

Un titolo dinamico è utile per aggiungere informazioni più precise nel titolo.

È possibile utilizzare la funzione paste () per stampare testo statico e testo dinamico. La sintassi di base di paste () è:

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

Esempio:

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

Produzione:

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

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

Produzione:

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

Puoi aggiungere un nome dinamico al nostro grafico, ovvero la media di mpg.

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

Spiegazione del codice

  • Crei la media di mpg con mean (mtcars $ mpg) memorizzato nella variabile mean_mpg
  • Usa paste () con mean_mpg per creare un titolo dinamico che restituisca il valore medio di mpg

Produzione:

Aggiungi un sottotitolo

Due dettagli aggiuntivi possono rendere il tuo grafico più esplicito. Stai parlando del sottotitolo e della didascalia. Il sottotitolo va subito sotto il titolo. La didascalia può informare su chi ha eseguito il calcolo e la fonte dei dati.

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

Spiegazione del codice

  • All'interno del lab (), hai aggiunto:
    • title = "Relazione tra miglia orarie e drat": Aggiungi titolo
    • subtitle = "Relazione suddivisa per classe di equipaggiamento": Aggiungi sottotitoli
    • caption = "Calcolo proprio degli autori: aggiungi didascalia
    • Separa ogni nuova informazione con una virgola,,
  • Nota che interrompi le righe di codice. Non è obbligatorio e aiuta solo a leggere il codice più facilmente

Produzione:

Rinomina l'asse xe l'asse y

Le variabili stesse nel set di dati potrebbero non essere sempre esplicite o per convenzione utilizzare _ quando sono presenti più parole (ad es. GDP_CAP). Non vuoi che questo nome appaia nel tuo grafico. È importante modificare il nome o aggiungere ulteriori dettagli, come le unità.

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

Spiegazione del codice

  • All'interno del lab (), hai aggiunto:
    • x = "Drat definition": cambia il nome dell'asse x
    • y = "Miglia per ora": cambia il nome dell'asse y

Produzione:

Controlla la bilancia

Puoi controllare la scala dell'asse.

La funzione seq () è utile quando è necessario creare una sequenza di numeri. La sintassi di base è:

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`

Ad esempio, se vuoi creare un intervallo da 0 a 12 con un passo di 3, avrai quattro numeri, 0 4 8 12

seq(0, 12,4)

Produzione:

## [1] 0 4 8 12 

È possibile controllare la scala dell'asse xe dell'asse y come di seguito

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

Spiegazione del codice

  • La funzione scale_y_continuous () controlla l' asse y
  • La funzione scale_x_continuous () controlla l' asse x .
  • Il parametro interruzioni controlla la divisione dell'asse. È possibile aggiungere manualmente la sequenza di numeri o utilizzare la funzione seq ():
    • seq (1, 3.6, by = 0.2): crea sei numeri da 2.4 a 3.4 con un passo di 3
    • seq (1, 1.6, by = 0.1): crea sette numeri da 1 a 1.6 con un passo di 1

Produzione:

Tema

Infine, R ci consente di personalizzare la trama con temi diversi. La libreria ggplot2 include otto temi:

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

Produzione:

Salva grafici

Dopo tutti questi passaggi, è il momento di salvare e condividere il grafico. Aggiungi ggsave ('NAME OF THE FILE) subito dopo aver tracciato il grafico e verrà memorizzato sul disco rigido.

Il grafico viene salvato nella directory di lavoro. Per controllare la directory di lavoro, puoi eseguire questo codice:

directory <-getwd()directory 

Tracciamo il tuo fantastico grafico, lo salviamo e controlliamo la posizione

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

Produzione:

ggsave("my_fantastic_plot.png.webp")

Produzione:

## Saving 5 x 4 in image

Nota : solo a scopo pedagogico, abbiamo creato una funzione chiamata open_folder () per aprire la cartella della directory per te. Hai solo bisogno di eseguire il codice qui sotto e vedere dove è memorizzata l'immagine. Dovresti vedere un file chiamato 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)

Sommario

Puoi riassumere gli argomenti per creare un grafico a dispersione nella tabella seguente:

Obbiettivo

Codice

Grafico a dispersione di base

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

Grafico a dispersione con gruppo di colori

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

Aggiungi valori adattati

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

Aggiungi titolo

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

Aggiungi sottotitoli

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

Rinomina x

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

Rinomina y

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

Controlla la bilancia

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)

Crea log

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

Tema

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

Salva

ggsave("my_fantastic_plot.png.webp")