Spridningsdiagram i R med ggplot2 (med exempel)

Innehållsförteckning:

Anonim

Grafer är den tredje delen av dataanalysprocessen. Den första delen handlar om dataextraktion , den andra delen handlar om rengöring och manipulering av data . Äntligen kan datavetaren behöva kommunicera sina resultat grafiskt .

Datavetenskapens jobb kan ses över i följande bild

  • Dataforskares första uppgift är att definiera en forskningsfråga. Denna forskningsfråga beror på projektets mål och mål.
  • Efter det är en av de mest framträdande uppgifterna funktionsteknik. Dataforskaren måste samla in, manipulera och rengöra data
  • När detta steg är slutfört kan han börja utforska datasetet. Ibland är det nödvändigt att förfina och ändra den ursprungliga hypotesen på grund av en ny upptäckt.

  • När den förklarande analysen har uppnåtts måste datavetaren ta hänsyn till läsarens förmåga att förstå de underliggande begreppen och modellerna .
  • Hans resultat bör presenteras i ett format som alla intressenter kan förstå. En av de bästa metoderna för att kommunicera resultaten är genom en graf .
  • Grafer är ett otroligt verktyg för att förenkla komplex analys.

I den här handledningen lär du dig-

  • ggplot2-paketet
  • Scatterplot
  • Byt axel
  • Spridningsdiagram med anpassade värden
  • Lägg till information i diagrammet
  • Byt namn på x-axel och y-axel
  • Kontrollera vågen
  • Tema
  • Spara tomter

ggplot2-paketet

Denna del av handledningen fokuserar på hur man gör grafer / diagram med R.

I denna handledning ska du använda ggplot2-paketet. Detta paket bygger på det konsekventa underlaget för boken Grammatik av grafik skriven av Wilkinson, 2005. ggplot2 är mycket flexibel, innehåller många teman och plotspecifikationer på en hög abstraktionsnivå. Med ggplot2 kan du inte plotta tredimensionell grafik och skapa interaktiv grafik.

I ggplot2 består en graf av följande argument:

  • data
  • estetisk kartläggning
  • geometriska objekt
  • statistiska omvandlingar
  • skalor
  • koordinatsystem
  • positionsjusteringar
  • facettering

Du lär dig hur du styr dessa argument i handledningen.

Den grundläggande syntaxen för ggplot2 är:

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

Låt oss se hur ggplot fungerar med mtcars-datasetet. Du börjar med att plotta en scatterplot av mpg-variabeln och drat-variabeln.

Grundläggande spridningsdiagram

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

Kodförklaring

  • Du skickar först datasetet mtcars till ggplot.
  • Inuti argumentet aes () lägger du till x-axeln och y-axeln.
  • + -Tecknet betyder att du vill att R ska fortsätta läsa koden. Det gör koden mer läsbar genom att bryta den.
  • Använd geom_point () för det geometriska objektet.

Produktion:

Sprid plot med grupper

Ibland kan det vara intressant att särskilja värdena med en grupp data (dvs. faktornivådata).

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

Kodförklaring

  • Aes () inuti geom_point () styr gruppens färg. Gruppen bör vara en faktorvariabel. Således omvandlar du den variabla växeln till en faktor.
  • Sammantaget har du koden aes (color = factor (gear)) som ändrar färg på prickarna.

Produktion:

Byt axel

Omskalning av data är en stor del av datavetenskapens jobb. I sällsynta fall kommer data i en fin klockform. En lösning för att göra dina data mindre känsliga för avvikare är att ändra skalan på dem.

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

Kodförklaring

  • Du omvandlar x- och y-variablerna i log () direkt inuti aes () -mappningen.

Observera att alla andra omvandlingar kan tillämpas som standardisering eller normalisering.

Produktion:

Spridningsdiagram med anpassade värden

Du kan lägga till ytterligare en nivå av information i diagrammet. Du kan plotta det monterade värdet av en linjä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

Kodförklaring

  • diagram: Du lagrar din graf i variabeldiagrammet. Det är användbart för vidare användning eller undvika alltför komplexa koder
  • Argumentet stat_smooth () styr för utjämningsmetoden
  • metod = "lm": Linjär regression
  • col = "# C42126": Kod för den röda färgen på linjen
  • se = FALSE: Visa inte standardfelet
  • storlek = 1: linjens storlek är 1

Produktion:

Observera att andra utjämningsmetoder är tillgängliga

  • glm
  • gam
  • loess: standardvärde
  • fälg

Lägg till information i diagrammet

Hittills har vi inte lagt till information i graferna. Grafer måste vara informativa. Läsaren ska se historien bakom dataanalysen bara genom att titta på diagrammet utan att hänvisa till ytterligare dokumentation. Därför behöver grafer bra etiketter. Du kan lägga till etiketter med funktionen labs ().

Den grundläggande syntaxen för lab () är:

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

Lägg till en titel

En obligatorisk information att lägga till är uppenbarligen en titel.

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

Kodförklaring

  • my_graph: Du använder diagrammet du lagrade. Det undviker att skriva om alla koder varje gång du lägger till ny information i diagrammet.
  • Du slår in titeln i labbet ().
  • Kod för linjens röda färg
  • se = FALSE: Visa inte standardfelet
  • storlek = 1: linjens storlek är 1

Produktion:

Lägg till en titel med ett dynamiskt namn

En dynamisk titel är till hjälp för att lägga till mer exakt information i titeln.

Du kan använda funktionen paste () för att skriva ut statisk text och dynamisk text. Den grundläggande syntaxen för pasta () är:

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

Exempel:

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

Produktion:

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

paste("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 lägga till ett dynamiskt namn i vår graf, nämligen genomsnittet av mpg.

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

Kodförklaring

  • Du skapar medelvärdet av mpg med medelvärdet (mtcars $ mpg) lagrat i mean_mpg-variabeln
  • Du använder klistra in () med mean_mpg för att skapa en dynamisk titel som returnerar medelvärdet för mpg

Produktion:

Lägg till en undertext

Ytterligare två detaljer kan göra din graf mer tydlig. Du pratar om undertexten och bildtexten. Undertexten går direkt under titeln. Bildtexten kan informera om vem som gjorde beräkningen och källan till data.

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

Kodförklaring

  • Inuti labbet () lade du till:
    • title = "Relation mellan mil per timme och drat": Lägg till titel
    • subtitle = "Förhållande uppdelat efter redskapsklass": Lägg till undertext
    • caption = "Författarens egen beräkning: Lägg till bildtext
    • Du separerar varje ny information med ett komma,,
  • Observera att du bryter kodraderna. Det är inte obligatoriskt och det hjälper bara att läsa koden lättare

Produktion:

Byt namn på x-axel och y-axel

Variablerna i datasetet kanske inte alltid är explicita eller använder enligt konventionen _ när det finns flera ord (dvs. GDP_CAP). Du vill inte att ett sådant namn ska visas i diagrammet. Det är viktigt att ändra namnet eller lägga till mer information, som enheterna.

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

Kodförklaring

  • Inuti labbet () lade du till:
    • x = "Drat definition": Ändra namnet på x-axeln
    • y = "Mil per timme": Ändra namnet på y-axeln

Produktion:

Kontrollera vågen

Du kan styra axelns skala.

Funktionen seq () är praktisk när du behöver skapa en sekvens med nummer. Den grundläggande syntaxen är:

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`

Om du till exempel vill skapa ett intervall från 0 till 12 med steg 3 kommer du att ha fyra siffror, 0 4 8 12

seq(0, 12,4)

Produktion:

## [1] 0 4 8 12 

Du kan styra skalan för x-axeln och y-axeln enligt nedan

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

Kodförklaring

  • Funktionen scale_y_continuous () styr y-axeln
  • Funktionen scale_x_continuous () styr x-axeln .
  • Parametern bryter kontrollerar uppdelningen av axeln. Du kan lägga till nummersekvensen manuellt eller använda funktionen seq ():
    • seq (1, 3.6, by = 0.2): Skapa sex nummer från 2.4 till 3.4 med ett steg på 3
    • seq (1, 1.6, by = 0.1): Skapa sju nummer från 1 till 1,6 med steg 1

Produktion:

Tema

Slutligen tillåter R oss att anpassa tomten med olika teman. Biblioteket ggplot2 innehåller åtta teman:

  • theme_bw ()
  • theme_light ()
  • temaklass ()
  • theme_linedraw ()
  • theme_dark ()
  • 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:

Spara tomter

Efter alla dessa steg är det dags att spara och dela din graf. Du lägger till ggsave ('FILENS NAMN) direkt efter att du ritat grafen och den kommer att lagras på hårddisken.

Grafen sparas i arbetskatalogen. För att kontrollera arbetskatalogen kan du köra den här koden:

directory <-getwd()directory 

Låt oss plotta din fantastiska graf, spara den och kontrollera platsen

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

Obs! Endast för pedagogiskt ändamål skapade vi en funktion som heter open_folder () för att öppna katalogmappen åt dig. Du behöver bara köra koden nedan och se var bilden är lagrad. Du bör se filnamnen 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)

Sammanfattning

Du kan sammanfatta argumenten för att skapa en spridningsdiagram i tabellen nedan:

Mål

Koda

Grundläggande spridningsdiagram

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

Spridningsdiagram med färggrupp

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

Lägg till monterade värden

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

Lägg till titel

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

Lägg till undertext

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

Byt namn på x

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

Byt namn på y

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

Kontrollera skalan

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)

Skapa loggar

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

Tema

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

Spara

ggsave("my_fantastic_plot.png.webp")