Grafer er den tredje del af processen med dataanalyse. Den første del handler om dataekstraktion , den anden del handler om rengøring og manipulation af dataene . Endelig kan dataforskeren muligvis kommunikere sine resultater grafisk .
Datalogens job kan gennemgås i det følgende billede
- En dataforskers første opgave er at definere et forskningsspørgsmål. Dette forskningsspørgsmål afhænger af projektets mål og mål.
- Derefter er funktionsteknik en af de mest fremtrædende opgaver. Dataforskeren skal indsamle, manipulere og rense dataene
- Når dette trin er afsluttet, kan han begynde at udforske datasættet. Nogle gange er det nødvendigt at forfine og ændre den oprindelige hypotese på grund af en ny opdagelse.
- Når den forklarende analyse er opnået, skal dataforskeren overveje læsernes evne til at forstå de underliggende begreber og modeller .
- Hans resultater skal præsenteres i et format, som alle interessenter kan forstå. En af de bedste metoder til at kommunikere resultaterne er gennem en graf .
- Grafer er et utroligt værktøj til at forenkle kompleks analyse.
I denne vejledning lærer du-
- ggplot2-pakke
- Scatterplot
- Skift akse
- Spred plot med monterede værdier
- Føj oplysninger til grafen
- Omdøb x-akse og y-akse
- Styr vægten
- Tema
- Gem plot
ggplot2-pakke
Denne del af vejledningen fokuserer på, hvordan man laver grafer / diagrammer med R.
I denne vejledning skal du bruge ggplot2-pakken. Denne pakke er bygget på den konsekvente underliggende bogen Grammatik af grafik skrevet af Wilkinson, 2005. ggplot2 er meget fleksibel og indeholder mange temaer og plotspecifikationer på et højt abstraktionsniveau. Med ggplot2 kan du ikke plotte 3-dimensionel grafik og oprette interaktiv grafik.
I ggplot2 er en graf sammensat af følgende argumenter:
- data
- æstetisk kortlægning
- geometrisk objekt
- statistiske transformationer
- skalaer
- koordinatsystem
- positionsjusteringer
- facettering
Du lærer, hvordan du styrer disse argumenter i vejledningen.
Den grundlæggende syntaks for ggplot2 er:
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
Lad os se, hvordan ggplot fungerer med mtcars-datasættet. Du starter med at plotte en scatterplot af mpg-variablen og drat-variablen.
Grundlæggende spredningsdiagram
library(ggplot2)ggplot(mtcars, aes(x = drat, y = mpg)) +geom_point()
Kode Forklaring
- Du sender først datasættet mtcars til ggplot.
- Inde i aes () -argumentet tilføjer du x-aksen og y-aksen.
- + Tegnet betyder, at du vil have R til at fortsætte med at læse koden. Det gør koden mere læselig ved at bryde den.
- Brug geom_point () til det geometriske objekt.
Produktion:
Spred plot med grupper
Nogle gange kan det være interessant at skelne værdierne med en datagruppe (dvs. faktorniveaudata).
ggplot(mtcars, aes(x = mpg, y = drat)) +geom_point(aes(color = factor(gear)))
Kode Forklaring
- Aes () inde i geom_point () styrer gruppens farve. Gruppen skal være en faktorvariabel. Således konverterer du det variable gear i en faktor.
- Alt i alt har du koden aes (farve = faktor (gear)), der ændrer farve på prikkerne.
Produktion:
Skift akse
Omskalering af data er en stor del af datavidenskabsjob. I sjældne tilfælde kommer data i en fin klokkeform. En løsning til at gøre dine data mindre følsomme over for afvigende er at omskalere dem.
ggplot(mtcars, aes(x = log(mpg), y = log(drat))) +geom_point(aes(color = factor(gear)))
Kode Forklaring
- Du transformerer x- og y-variablerne i log () direkte inde i aes () -kortlægningen.
Bemærk, at enhver anden transformation kan anvendes, såsom standardisering eller normalisering.
Produktion:
Spred plot med monterede værdier
Du kan tilføje et andet niveau af information til grafen. Du kan plotte den monterede værdi af en lineær regression.
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
Kode Forklaring
- graf: Du gemmer din graf i den variable graf. Det er nyttigt til videre brug eller undgå for komplicerede kodelinjer
- Argumentet stat_smooth () styrer til udjævningsmetoden
- metode = "lm": Lineær regression
- col = "# C42126": Kode for linjens røde farve
- se = FALSE: Vis ikke standardfejlen
- størrelse = 1: linjens størrelse er 1
Produktion:
Bemærk, at andre udjævningsmetoder er tilgængelige
- glm
- gam
- loess: standardværdi
- kant
Føj oplysninger til grafen
Indtil videre har vi ikke tilføjet oplysninger i graferne. Grafer skal være informative. Læseren skal se historien bag dataanalysen ved blot at se på grafen uden at henvise til yderligere dokumentation. Derfor har grafer brug for gode etiketter. Du kan tilføje etiketter med labs () -funktionen.
Den grundlæggende syntaks for lab () er:
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")
Tilføj en titel
En obligatorisk information at tilføje er naturligvis en titel.
my_graph +labs(title = "Plot Mile per hours and drat, in log")
Kode Forklaring
- my_graph: Du bruger den graf, du har gemt. Det undgår omskrivning af alle koder, hver gang du tilføjer nye oplysninger til grafen.
- Du pakker titlen inde i laboratoriet ().
- Kode for linjens røde farve
- se = FALSE: Vis ikke standardfejlen
- størrelse = 1: linjens størrelse er 1
Produktion:
Tilføj en titel med et dynamisk navn
En dynamisk titel er nyttig til at tilføje mere præcise oplysninger i titlen.
Du kan bruge funktionen pasta () til at udskrive statisk tekst og dynamisk tekst. Den grundlæggende syntaks for pasta () er:
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
Eksempel:
A <-2010paste("The first year is", A)
Produktion:
## [1] "The first year is 2010"
B <-2018paste("The first year is", A, "and the last year is", B)
Produktion:
## [1] "The first year is 2010 and the last year is 2018"
Du kan tilføje et dynamisk navn til vores graf, nemlig gennemsnittet af mpg.
mean_mpg <- mean(mtcars$mpg)my_graph + labs(title = paste("Plot Mile per hours and drat, in log. Average mpg is", mean_mpg))
Kode Forklaring
- Du opretter gennemsnittet af mpg med middelværdien (mtcars $ mpg) gemt i variablen mean_mpg
- Du bruger pastaen () med mean_mpg til at oprette en dynamisk titel, der returnerer middelværdien af mpg
Produktion:
Tilføj en undertekst
To yderligere detaljer kan gøre din graf mere eksplicit. Du taler om underteksten og billedteksten. Underteksten går lige under titlen. Billedteksten kan informere om, hvem der foretog beregningen og kilden til dataene.
my_graph +labs(title ="Relation between Mile per hours and drat",subtitle ="Relationship break down by gear class",caption = "Authors own computation")
Kode Forklaring
- Inde i laboratoriet () tilføjede du:
- title = "Forholdet mellem kilometer pr. time og drat": Tilføj titel
- subtitle = "Forhold opdelt efter gearklasse": Tilføj undertekst
- caption = "Forfatterens egen beregning: Tilføj billedtekst
- Du adskiller hver ny information med et komma,,
- Bemærk, at du bryder kodelinjerne. Det er ikke obligatorisk, og det hjælper kun med at læse koden lettere
Produktion:
Omdøb x-akse og y-akse
Variabler i selve datasættet er muligvis ikke altid eksplicitte, eller brug konventionelt _, når der er flere ord (dvs. GDP_CAP). Du ønsker ikke, at et sådant navn skal vises i din graf. Det er vigtigt at ændre navnet eller tilføje flere detaljer som enhederne.
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")
Kode Forklaring
- Inde i laboratoriet () tilføjede du:
- x = "Drat definition": Skift navnet på x-aksen
- y = "Mil pr. time": Skift navnet på y-aksen
Produktion:
Styr vægten
Du kan styre aksens skala.
Funktionen seq () er praktisk, når du skal oprette en række af tal. Den grundlæggende syntaks er:
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`
For eksempel, hvis du vil oprette et interval fra 0 til 12 med et trin på 3, har du fire tal, 0 4 8 12
seq(0, 12,4)
Produktion:
## [1] 0 4 8 12
Du kan styre skalaen på x-aksen og y-aksen som nedenfor
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")
Kode Forklaring
- Funktionen scale_y_continuous () styrer y-aksen
- Funktionen scale_x_continuous () styrer x-aksen .
- Parameterbruddet styrer aksens opdeling. Du kan tilføje rækkefølgen af tal manuelt eller bruge funktionen seq ():
- seq (1, 3.6, by = 0.2): Opret seks tal fra 2.4 til 3.4 med et trin på 3
- seq (1, 1.6, by = 0.1): Opret syv tal fra 1 til 1.6 med et trin på 1
Produktion:
Tema
Endelig giver R os mulighed for at tilpasse plot med forskellige temaer. Biblioteket ggplot2 indeholder otte temaer:
- tema_bw ()
- tema_lys ()
- tema_klasse ()
- theme_linedraw ()
- tema_mørk ()
- tema_minimal ()
- tema_grå ()
- 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")
Produktion:
Gem plot
Efter alle disse trin er det tid til at gemme og dele din graf. Du tilføjer ggsave ('FILENS NAVN) lige efter at du har plottet grafen, og den gemmes på harddisken.
Grafen gemmes i arbejdsmappen. For at kontrollere arbejdsmappen kan du køre denne kode:
directory <-getwd()directory
Lad os plotte din fantastiske graf, gemme den og kontrollere placeringen
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")
Produktion:
ggsave("my_fantastic_plot.png.webp")
Produktion:
## Saving 5 x 4 in image
Bemærk : Kun til pædagogisk formål oprettede vi en funktion kaldet open_folder () for at åbne katalogmappen for dig. Du skal bare køre koden nedenfor og se, hvor billedet er gemt. Du skal se filnavne 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)
Resumé
Du kan opsummere argumenterne for at oprette et spredningsdiagram i nedenstående tabel:
Objektiv |
Kode |
---|---|
Grundlæggende spredningsdiagram |
ggplot(df, aes(x = x1, y = y)) + geom_point() |
Spred plot med farvegruppe |
ggplot(df, aes(x = x1, y = y)) + geom_point(aes(color = factor(x1)) + stat_smooth(method = "lm") |
Tilføj monterede værdier |
ggplot(df, aes(x = x1, y = y)) + geom_point(aes(color = factor(x1)) |
Tilføj titel |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(title = paste("Hello Guru99")) |
Tilføj undertekst |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(subtitle = paste("Hello Guru99")) |
Omdøb x |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(x = "X1") |
Omdøb y |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(y = "y1") |
Kontroller skalaen |
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) |
Opret logfiler |
ggplot(df, aes(x =log(x1), y = log(y))) + geom_point() |
Tema |
ggplot(df, aes(x = x1, y = y)) + geom_point() + theme_classic() |
Gemme |
ggsave("my_fantastic_plot.png.webp") |