Grafico a dispersione in R utilizzando ggplot2 (con esempio)
I grafici sono la terza parte del processo di analisi dei dati. La prima parte riguarda dati extracproduzione, la seconda parte tratta pulizia e manipolazione dei dati. Alla fine, potrebbe essere necessario per lo scienziato dei dati comunicare graficamente i suoi risultati.
Il lavoro dello scienziato dei dati puรฒ essere riassunto nella seguente immagine
- Il primo compito di un data scientist รจ definire una domanda di ricerca. Questa domanda di ricerca dipende dagli obiettivi e dagli scopi del progetto.
- Successivamente, uno dei compiti piรน importanti รจ l'ingegneria delle funzionalitร . Il data scientist deve raccogliere, manipolare e pulire i dati
- Una volta completato questo passaggio, puรฒ iniziare a esplorare il set di dati. A volte รจ necessario affinare e modificare l'ipotesi originale a causa di una nuova scoperta.
- Quando il esplicativo una volta raggiunta l'analisi, il data scientist deve considerare la capacitร del lettore di farlo comprendere i concetti e i 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 sono attraverso a grafico.
- I grafici sono uno strumento incredibile per semplificare analisi complesse.
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 solida base del libro Grammar of graphics scritto da Wilkinson, 2005. ggplot2 รจ molto flessibile, incorpora molti temi e specifiche di plotting ad un alto livello di astrazione.traczione. Con ggplot2 non รจ possibile tracciare grafici tridimensionali e creare grafici interattivi.
In ggplot2, un grafico รจ composto dai seguenti argomenti:
- dati
- mappa esteticaping
- oggetto geometrico
- trasformazioni statistiche
- bilancia
- sistema di coordinate
- aggiustamenti di posizione
- sfaccettatura
Imparerai come controllare questi argomenti nel tutorial.
La sintassi di base di ggplot2 รจ:
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()`
Grafico a dispersione
Vediamo come funziona ggplot con il set di dati mtcars. Si inizia 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()
Code Spiegazione
- Per prima cosa passi il set di dati mtcars a ggplot.
- All'interno dell'argomento aes() aggiungi l'asse x e l'asse y.
- Il segno + significa che vuoi che R continui a leggere il codice. Rende il codice piรน leggibile rompendolo.
- Utilizzare geom_point() per l'oggetto geometrico.
Produzione:
Grafico a dispersione con gruppi
A volte puรฒ essere interessante distinguere i valori in base a un gruppo di dati (ad esempio dati a livello di fattore).
ggplot(mtcars, aes(x = mpg, y = drat)) +
geom_point(aes(color = factor(gear)))
Code Spiegazione
- Aes() all'interno di geom_point() controlla il colore del gruppo. Il gruppo dovrebbe essere un fattore variabile. Pertanto, converti la marcia variabile in un fattore.
- Complessivamente, hai il codice aes(color = factor(gear)) che cambia il colore dei punti.
Produzione:
Cambia asse
Ridimensionare i dati รจ una parte importante del lavoro del data scientist. In rare occasioni i dati si presentano sotto una bella forma a campana. Una soluzione per rendere i dati meno sensibili ai valori anomali รจ ridimensionarli.
ggplot(mtcars, aes(x = log(mpg), y = log(drat))) +
geom_point(aes(color = factor(gear)))
Code Spiegazione
- Le variabili x e y vengono trasformate direttamente nella funzione log() all'interno della funzione aes() map.ping.
Si noti che รจ possibile applicare qualsiasi altra trasformazione come la standardizzazione o la normalizzazione.
Produzione:
Grafico a dispersione con valori adattati
ร possibile 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
Code Spiegazione
- grafico: Memorizzi il tuo grafico nella variabile grafico. ร utile per un uso futuro o per evitare linee di codice troppo complesse
- L'argomento stat_smooth() controlla il metodo di smoothing
- metodo = โlmโ: Regressione lineare
- col = โ#C42126โ: Code per il colore rosso della linea
- se = FALSE: non visualizzare l'errore standard
- dimensione = 1: la dimensione della linea รจ 1
Produzione:
Tieni presente che sono disponibili altri metodi di livellamento
- glm
- gam
- perdita: valore predefinito
- cerchione
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-axis Example:lab(title = "Hello Guru99", subtitle = "My first plot")
Aggiungi un titolo
Un'informazione obbligatoria da aggiungere รจ ovviamente il titolo.
my_graph +
labs(
title = "Plot Mile per hours and drat, in log"
)
Code Spiegazione
- my_graph: usi il grafico che hai memorizzato. Evita di riscrivere tutti i codici ogni volta che aggiungi nuove informazioni al grafico.
- Avvolgi il titolo all'interno di lab().
- Code per il colore rosso della linea
- se = FALSE: non visualizzare l'errore standard
- dimensione = 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 <-2010
paste("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)
)
Code Spiegazione
- Crei la media di mpg con mean(mtcars$mpg) memorizzata nella variabile mean_mpg
- Utilizzi 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 proprio 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"
)
Code Spiegazione
- All'interno del lab(), hai aggiunto:
- title = โRapporto tra miglia orarie e dratโ: aggiungi titolo
- sottotitolo = โRelazione suddivisa per classe di ingranaggioโ: aggiungi sottotitolo
- caption = โCalcolo dell'autore: aggiungi didascalia
- Separa ogni nuova informazione con una virgola, ,
- Tieni presente che interrompi le righe di codice. Non รจ obbligatorio e aiuta solo a leggere piรน facilmente il codice
Produzione:
Rinominare asse x e asse y
Le variabili stesse nel dataset potrebbero non essere sempre esplicite o per convenzione utilizzare _ quando ci sono piรน parole (ad esempio GDP_CAP). Non vuoi che tale nome appaia nel tuo grafico. ร importante cambiare il nome o aggiungere altri 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"
)
Code Spiegazione
- All'interno del lab(), hai aggiunto:
- x = โDefinizione Dratโ: cambia il nome dell'asse x
- y = โMiglia all'oraโ: cambia il nome dell'asse y
Produzione:
Controlla la bilancia
ร possibile 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 x e 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"
)
Code Spiegazione
- La funzione scale_y_continuous() controlla il asse y
- La funzione scale_x_continuous() controlla il asse x.
- Il parametro break controlla la divisione dell'asse. Puoi 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:
- tema_bw()
- tema_luce()
- tema_classis()
- tema_linedraw()
- tema_scuro()
- tema_minimo()
- tema_grigio()
- tema_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 trame
Dopo tutti questi passaggi, รจ il momento di salvare e condividere il tuo grafico. Aggiungi ggsave('NAME OF THE FILE) subito dopo aver tracciato il grafico e verrร archiviato 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")
Produzione:
## Saving 5 x 4 in image
Note:: Solo a scopo pedagogico, abbiamo creato una funzione chiamata open_folder() per aprire la cartella della directory per te. Devi solo eseguire il codice seguente e vedere dove รจ archiviata l'immagine. Dovresti vedere un file chiamato 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)
Sintesi
ร possibile riassumere gli argomenti per creare un grafico a dispersione nella tabella seguente:
| Obiettivo | Code |
|---|---|
| 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 scala |
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")
|












