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 <-2018paste("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") |