Grafieken zijn het derde deel van het proces van data-analyse. Het eerste deel gaat over data-extractie , het tweede deel gaat over het opschonen en manipuleren van de data . Eindelijk moet de datawetenschapper zijn resultaten misschien grafisch communiceren .
De functie van de datawetenschapper kan in de volgende afbeelding worden besproken
- De eerste taak van een datawetenschapper is het definiëren van een onderzoeksvraag. Deze onderzoeksvraag hangt af van de doelstellingen en doelstellingen van het project.
- Daarna is een van de meest prominente taken de feature-engineering. De datawetenschapper moet de data verzamelen, manipuleren en opschonen
- Als deze stap is voltooid, kan hij beginnen met het verkennen van de dataset. Soms is het nodig om de oorspronkelijke hypothese te verfijnen en te wijzigen vanwege een nieuwe ontdekking.
- Wanneer de verklarende analyse is bereikt, moet de datawetenschapper rekening houden met het vermogen van de lezer om de onderliggende concepten en modellen te begrijpen .
- Zijn resultaten moeten worden gepresenteerd in een formaat dat alle belanghebbenden kunnen begrijpen. Een van de beste methoden om de resultaten te communiceren, is door middel van een grafiek .
- Grafieken zijn een ongelooflijk hulpmiddel om complexe analyses te vereenvoudigen.
In deze tutorial leer je-
- ggplot2-pakket
- Scatterplot
- Verander as
- Spreidingsplot met aangepaste waarden
- Voeg informatie toe aan de grafiek
- Hernoem x-as en y-as
- Beheers de weegschaal
- Thema
- Bewaar percelen
ggplot2-pakket
Dit deel van de tutorial richt zich op het maken van grafieken / diagrammen met R.
In deze tutorial ga je het ggplot2-pakket gebruiken. Dit pakket is gebaseerd op de consistente onderliggende waarde van het boek Grammar of graphics, geschreven door Wilkinson, 2005. ggplot2 is zeer flexibel, bevat veel thema's en plotspecificaties op een hoog abstractieniveau. Met ggplot2 kunt u geen driedimensionale afbeeldingen plotten en interactieve afbeeldingen maken.
In ggplot2 bestaat een grafiek uit de volgende argumenten:
- gegevens
- esthetische mapping
- geometrisch object
- statistische transformaties
- schalen
- coördinatie systeem
- positie aanpassingen
- facetten
In de tutorial leer je hoe je die argumenten kunt beheersen.
De basissyntaxis van ggplot2 is:
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
Laten we eens kijken hoe ggplot werkt met de mtcars-dataset. U begint met het uitzetten van een scatterplot van de mpg-variabele en drat-variabele.
Basis spreidingsdiagram
library(ggplot2)ggplot(mtcars, aes(x = drat, y = mpg)) +geom_point()
Code Verklaring
- U geeft eerst de dataset mtcars door aan ggplot.
- Binnen het argument aes () voeg je de x-as en de y-as toe.
- Het + -teken betekent dat u wilt dat R de code blijft lezen. Het maakt de code leesbaarder door deze te breken.
- Gebruik geom_point () voor het geometrische object.
Uitgang:
Scatterplot met groepen
Soms kan het interessant zijn om de waarden te onderscheiden door een groep gegevens (dwz gegevens op factorniveau).
ggplot(mtcars, aes(x = mpg, y = drat)) +geom_point(aes(color = factor(gear)))
Code Verklaring
- De aes () in het geom_point () bepaalt de kleur van de groep. De groep moet een factorvariabele zijn. Je zet de variabele versnelling dus om in een factor.
- Al met al heb je de code aes (kleur = factor (versnelling)) die de kleur van de punten verandert.
Uitgang:
Verander as
Het opnieuw schalen van de gegevens is een groot deel van het werk van de datawetenschapper. In zeldzame gevallen komen de gegevens in een mooie belvorm. Een oplossing om uw gegevens minder gevoelig te maken voor uitschieters, is door ze opnieuw te schalen.
ggplot(mtcars, aes(x = log(mpg), y = log(drat))) +geom_point(aes(color = factor(gear)))
Code Verklaring
- U transformeert de x- en y-variabelen in log () rechtstreeks in de aes () -toewijzing.
Merk op dat elke andere transformatie kan worden toegepast, zoals standaardisatie of normalisatie.
Uitgang:
Spreidingsplot met aangepaste waarden
U kunt een ander informatieniveau aan de grafiek toevoegen. U kunt de aangepaste waarde van een lineaire regressie plotten.
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 Verklaring
- grafiek: u slaat uw grafiek op in de variabele grafiek. Het is handig voor verder gebruik of om een te complexe coderegel te vermijden
- Het argument stat_smooth () controleert de afvlakkingsmethode
- method = "lm": Lineaire regressie
- col = "# C42126": Code voor de rode kleur van de regel
- se = FALSE: Geef de standaardfout niet weer
- size = 1: de maat van de lijn is 1
Uitgang:
Merk op dat er andere afvlakkingsmethoden beschikbaar zijn
- glm
- gam
- löss: standaardwaarde
- rand
Voeg informatie toe aan de grafiek
Tot dusver hebben we geen informatie in de grafieken toegevoegd. Grafieken moeten informatief zijn. De lezer zou het verhaal achter de data-analyse moeten zien door gewoon naar de grafiek te kijken zonder aanvullende documentatie te raadplegen. Daarom hebben grafieken goede labels nodig. U kunt labels toevoegen met de functie labs ().
De basissyntaxis voor lab () is:
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")
Voeg een titel toe
Een verplichte informatie om toe te voegen is natuurlijk een titel.
my_graph +labs(title = "Plot Mile per hours and drat, in log")
Code Verklaring
- my_graph: Je gebruikt de grafiek die je hebt opgeslagen. Het voorkomt dat alle codes elke keer dat u nieuwe informatie aan de grafiek toevoegt, worden herschreven.
- Je plaatst de titel in het lab ().
- Code voor de rode kleur van de lijn
- se = FALSE: Geef de standaardfout niet weer
- size = 1: de maat van de lijn is 1
Uitgang:
Voeg een titel toe met een dynamische naam
Een dynamische titel is handig om nauwkeurigere informatie aan de titel toe te voegen.
U kunt de functie paste () gebruiken om statische tekst en dynamische tekst af te drukken. De basissyntaxis van paste () is:
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
Voorbeeld:
A <-2010paste("The first year is", A)
Uitgang:
## [1] "The first year is 2010"
B <-2018paste("The first year is", A, "and the last year is", B)
Uitgang:
## [1] "The first year is 2010 and the last year is 2018"
U kunt een dynamische naam aan onze grafiek toevoegen, namelijk het gemiddelde van 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 Verklaring
- U maakt het gemiddelde van mpg met gemiddelde (mtcars $ mpg) opgeslagen in de variabele mean_mpg
- U gebruikt de paste () met mean_mpg om een dynamische titel te maken die de gemiddelde waarde van mpg retourneert
Uitgang:
Voeg een ondertitel toe
Twee extra details kunnen uw grafiek explicieter maken. Je hebt het over de ondertitel en het bijschrift. De ondertitel gaat direct onder de titel. Het bijschrift kan informatie geven over wie de berekening heeft uitgevoerd en de bron van de gegevens.
my_graph +labs(title ="Relation between Mile per hours and drat",subtitle ="Relationship break down by gear class",caption = "Authors own computation")
Code Verklaring
- In het lab () heb je toegevoegd:
- title = "Relatie tussen mijl per uur en drat": titel toevoegen
- subtitle = "Relatie uitgesplitst per versnellingsklasse": ondertitel toevoegen
- caption = "Eigen berekening auteur: bijschrift toevoegen
- U scheidt elke nieuwe informatie met een komma,
- Merk op dat je de regels code doorbreekt. Het is niet verplicht, en het helpt alleen om de code gemakkelijker te lezen
Uitgang:
Hernoem x-as en y-as
Variabelen zelf in de dataset zijn misschien niet altijd expliciet of gebruiken volgens afspraak de _ als er meerdere woorden zijn (bijv. GDP_CAP). U wilt niet dat een dergelijke naam in uw grafiek verschijnt. Het is belangrijk om de naam te wijzigen of meer details toe te voegen, zoals de eenheden.
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 Verklaring
- In het lab () heb je toegevoegd:
- x = "Drat definition": Verander de naam van de x-as
- y = "Mijl per uur": Verander de naam van de y-as
Uitgang:
Beheers de weegschaal
U kunt de schaal van de as regelen.
De functie seq () is handig wanneer u een reeks getallen moet maken. De basissyntaxis is:
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`
Als u bijvoorbeeld een bereik van 0 tot 12 wilt maken met een stap van 3, heeft u vier cijfers: 0 4 8 12
seq(0, 12,4)
Uitgang:
## [1] 0 4 8 12
U kunt de schaal van de x-as en de y-as regelen zoals hieronder
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 Verklaring
- De functie scale_y_continuous () bestuurt de y-as
- De functie scale_x_continuous () bestuurt de x-as .
- De parameter breaks regelt de splitsing van de as. U kunt de nummerreeks handmatig toevoegen of de functie seq () gebruiken:
- seq (1, 3.6, by = 0.2): maak zes getallen van 2,4 tot 3,4 met een stap van 3
- seq (1, 1.6, by = 0.1): Maak zeven getallen van 1 tot 1.6 met een stap van 1
Uitgang:
Thema
Ten slotte stelt R ons in staat om de plot aan te passen met verschillende thema's. De bibliotheek ggplot2 bevat acht thema's:
- theme_bw ()
- theme_light ()
- theme_classis ()
- theme_linedraw ()
- theme_dark ()
- theme_minimal ()
- thema_grijs ()
- 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")
Uitgang:
Bewaar percelen
Na al deze stappen is het tijd om uw grafiek op te slaan en te delen. U voegt ggsave ('NAAM VAN HET BESTAND) toe direct nadat u de grafiek hebt getekend en deze wordt op de harde schijf opgeslagen.
De grafiek wordt opgeslagen in de werkdirectory. Om de werkdirectory te controleren, kunt u deze code uitvoeren:
directory <-getwd()directory
Laten we uw fantastische grafiek uitzetten, opslaan en de locatie controleren
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")
Uitgang:
ggsave("my_fantastic_plot.png.webp")
Uitgang:
## Saving 5 x 4 in image
Opmerking : alleen voor pedagogische doeleinden hebben we een functie gemaakt met de naam open_folder () om de directorymap voor u te openen. U hoeft alleen de onderstaande code uit te voeren en te zien waar de afbeelding is opgeslagen. U zou een bestand moeten zien met de naam 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)
Overzicht
U kunt de argumenten om een spreidingsplot te maken in de onderstaande tabel samenvatten:
Objectief |
Code |
---|---|
Basis spreidingsdiagram |
ggplot(df, aes(x = x1, y = y)) + geom_point() |
Spreidingsplot met kleurgroep |
ggplot(df, aes(x = x1, y = y)) + geom_point(aes(color = factor(x1)) + stat_smooth(method = "lm") |
Voeg passende waarden toe |
ggplot(df, aes(x = x1, y = y)) + geom_point(aes(color = factor(x1)) |
Voeg titel toe |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(title = paste("Hello Guru99")) |
Ondertiteling toevoegen |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(subtitle = paste("Hello Guru99")) |
Hernoem x |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(x = "X1") |
Hernoemen y |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(y = "y1") |
Beheers de schaal |
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) |
Maak logboeken |
ggplot(df, aes(x =log(x1), y = log(y))) + geom_point() |
Thema |
ggplot(df, aes(x = x1, y = y)) + geom_point() + theme_classic() |
Opslaan |
ggsave("my_fantastic_plot.png.webp") |