Programmering

Enklere ggplot med ggeasy R-pakken

Ggplot2 R-pakke for datavisualisering er ekstremt kraftig og fleksibel. Det er imidlertid ikke alltid lett å huske hvordan du gjør hver oppgave - spesielt hvis du ikke er en hyppig bruker. Hvordan endrer du størrelsen på en graftittel? Hvordan fjerner du legende titler? Min vanlige løsning er å lagre RStudio-kodebiter for ting jeg har problemer med å huske. Men det er også en pakke som kan hjelpe: ggeasy.

Som navnet sier, er målet med ggeasy å, vel, gjøre ggplot2 enkelt - eller i det minste easier. Det har det noen mennesker kan synes å være mer intuitive funksjoner for typiske oppgaver, mest rundt tekst og akseformatering. (Denne pakken påvirker ikke måten linjer, punkter og søyler se og oppføre deg). Alle ggeasy-funksjoner starter med lett_ så det er, ja, lett å finne dem ved hjelp av RStudio autofullføring. Du kan se hvordan det fungerer i videoen ovenfor.

Hvis du vil følge med eksemplet mitt nedenfor, er ggeasy på CRAN, så du kan installere det med install.packages ("ggeasy"). Jeg bruker også pakkene ggplot2 (naturlig), dplyr, rio og lubridate. Senere vil jeg legge til patchwork-pakken for superenkel plassering av flere grafer; det er også på CRAN.

For dette eksemplet skal jeg bruke data om hva som de fleste tenker på i disse dager: coronavirus. Du kan laste ned en CSV-fil med data fra amerikanske stater fra Coronavirus Tracking Project med

download.file ("// covidtracking.com/api/states/daily.csv",

destfile = "covid19.csv")

(Du kan gi navnet destfile destinasjonsfilen alt du vil.) Jeg brukte rio :: import () for å importere dataene, men du kan også bruke readr :: read_csv (), read.csv (), data.table :: fread ()eller annen funksjon for å importere CSV.

Med rio kom datoene inn som heltall, så jeg bruker lubridate ymd () funksjon for å gjøre kolonnen til datoobjekter:

data $ date <- lubridate :: ymd (data $ date)

For å lage en graf som ikke er for vanskelig å forstå, filtrerer jeg disse dataene for bare et par tilstander, så det ikke er 50 separate tidsserielinjer. Jeg valgte Louisiana for å se økningen i saker der - Louisiana guvernøren sa staten har blant verdens raskeste vekst i saker. (Det spekuleres i at Mardi Gras i februar kan ha forårsaket en klynge i New Orleans.) Jeg vil også legge til Massachusetts, en stat med omtrent 50 prosent flere mennesker enn Louisiana, siden jeg er basert der.

Etter å ha filtrert dataene, lager jeg et grunnleggende linjediagram over dataene:

states2 <- filter (data, state% in% c ("LA", "MA"))

ggplot (stater2, aes (x = dato, y = positiv, farge = tilstand)) +

geom_line () +

geom_point () +

tema_minimal () +

ggtitle ("Lousiana & Massachusetts Daily Covid-19 Cases")

Sharon Machlis,

Det er en ganske bratt økning. Noe av det kan skyldes en økning i testing - kanskje vi bare vet om flere tilfeller fordi testing økte. Jeg ser på det om et øyeblikk.

Først, hva med noen få justeringer til denne grafen?

La oss starte med å gjøre graftittelen større. For å bruke ggeasy, begynner jeg å skrive lett_ i RStudio øverste venstre kildepanel og bla til jeg finner det jeg vil ha.

Sharon Machlis,

easy_plot_title_size () ser ut som funksjonen jeg trenger. Jeg kan endre grafittittelen til 16-punkts type med denne koden:

ggplot (stater2, aes (x = dato, y = positiv, farge = tilstand)) +

geom_line () +

geom_point () +

tema_minimal () +

ggtitle ("Lousiana & Massachusetts Daily Covid-19 Cases") +

easy_plot_title_size (16)

Jeg kan rotere x-aksetekst med easy_rotate_x_labels (90) for en 90-graders rotasjon, og fjern legendatittelen (det er ganske åpenbart at dette er stater) med easy_remove_legend_title (). Hele grafkoden er nedenfor, inkludert lagring av grafen i en variabel som heter positive.

positive <- ggplot (stater2, aes (x = dato, y = positiv, farge = tilstand)) +

geom_line () +

geom_point () +

tema_minimal () +

ggtitle ("Lousiana & Massachusetts Daily Covid-19 Cases") +

easy_plot_title_size (16) +

easy_rotate_x_labels (90) +

easy_remove_legend_title ()

Sharon Machlis,

Deretter vil jeg se på negativ Coronavirus-testresultater, for å se om de stiger med samme hastigheter som positive. Jeg bruker samme kode, men bare bytter y-kolonnen til negativ.

negativer <- ggplot (stater2, aes (x = dato, y = negativ, farge = tilstand)) +

geom_line () +

geom_point () +

tema_minimal () +

ggtitle ("Lousiana & Massachusetts Negatives") +

easy_plot_title_size (16) +

easy_rotate_x_labels (90) +

easy_remove_x_axis ("title") +

easy_remove_y_axis ("title") +

easy_remove_legend_title ()

Sharon Machlis,

Det ser ut til å være en større økning i positive enn negativer i Louisiana. Selv om vi ikke vet om det er fordi testkriteriene er endret eller noe annet.

Det vil være nyttig å se disse to grafene side om side. Det er der lappepakken kommer inn.

Med bare disse to kodelinjene laster den første lappetepppakken:

bibliotek ("lappeteppe")

positive + negative

Jeg får dette:

Sharon Machlis,

Det er utrolig enkelt å plassere flere grafer med lappeteppe. For mer informasjon om hvordan du tilpasser layouter, gå til patchwork-nettstedet.

Jeg kan nå gå tilbake og bruke ggeasy for å fjerne en av legendene, så det ikke er to, og kjør deretter lappetepper på nytt:

negativer <- negativer +

easy_remove_legend ()

positive + negative

Det er klart at ggeasy er ganske nyttig for rask og enkel datautforskning!

For flere R-tips, gå til "Gjør mer med R" -siden på eller sjekk ut "Gjør mer med R"-YouTube-spillelisten.

$config[zx-auto] not found$config[zx-overlay] not found