Programmering

Lettere ggplot med ggeasy R-pakken

Ggplot2-datavisualisering R-pakken er ekstremt kraftig og fleksibel. Det er dog ikke altid let at huske, hvordan man gør hver opgave - især hvis du ikke er en hyppig bruger. Hvordan ændrer du størrelsen på en graftitel? Hvordan fjerner du legendetitler? Min sædvanlige løsning er at gemme RStudio-kodestykker til ting, jeg har problemer med at huske. Men der er også en pakke, der kan hjælpe: ggeasy.

Som navnet siger, er målet med ggeasy at, ja, gøre ggplot2 let - eller i det mindste leter. Det har, hvad nogle mennesker synes at være mere intuitive funktioner til typiske opgaver, mest omkring tekst og akseformatering. (Denne pakke påvirker ikke måden linjer, punkter og søjler se og opfør dig). Alle ggeasy-funktioner starter med let_ så det er, ja, let at finde dem ved hjælp af RStudio autofuldførelse. Du kan se, hvordan det fungerer i videoen ovenfor.

Hvis du gerne vil følge mit eksempel nedenfor, er ggeasy på CRAN, så du kan installere det med install.packages ("ggeasy"). Jeg bruger også pakkerne ggplot2 (naturligt), dplyr, rio og lubridate. Senere vil jeg tilføje patchwork-pakken til superenkel placering af flere grafer; det er også på CRAN.

Til dette eksempel skal jeg bruge data om, hvad der er de fleste menneskers sind i disse dage: coronavirus. Du kan downloade en CSV-fil med data fra den amerikanske stat fra Coronavirus Tracking Project med

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

destfile = "covid19.csv")

(Du kan navngive destfile destinationsfil alt hvad du vil.) Jeg brugte rio :: import () for at importere dataene, men du kan også bruge readr :: read_csv (), read.csv (), data.table :: fread ()eller enhver anden funktion til at importere CSV.

Med rio kom datoerne ind som heltal, så jeg bruger lubridates ymd () funktion til at gøre kolonnen til datoobjekter:

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

For at oprette en graf, der ikke er for vanskelig at forstå, filtrerer jeg disse data for blot et par tilstande, så der ikke er 50 separate tidsserielinjer. Jeg valgte Louisiana for at se stigningen i sager der - Louisiana guvernøren sagde, at staten er blandt verdens hurtigste vækst i sager. (Der er spekulationer om, at Mardi Gras i februar muligvis har forårsaget en klynge i New Orleans.) Jeg vil også tilføje Massachusetts, en stat med omkring 50 procent flere mennesker end Louisiana, da jeg er baseret der.

Efter at have filtreret dataene opretter jeg en grundlæggende linjediagram over dataene:

stater2 <- filter (data, tilstand% i% c ("LA", "MA"))

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

geom_line () +

geom_point () +

tema_minimal () +

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

Sharon Machlis,

Det er en ret stejl stigning. Noget af det kan skyldes en stigning i test - måske vi bare ved godt om flere sager, fordi test opstod. Jeg ser på det om et øjeblik.

For det første dog hvad med et par tweaks til denne graf?

Lad os starte med at gøre grafens titel større. For at bruge ggeasy begynder jeg at skrive let_ i RStudio øverste venstre kildepanel, og rul, indtil jeg finder, hvad jeg vil.

Sharon Machlis,

easy_plot_title_size () ligner den funktion, jeg har brug for. Jeg kan ændre graftitlen til 16-punkttype med denne kode:

ggplot (stater2, aes (x = dato, y = positiv, farve = 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 rotation, og fjern legendatitlen (det er ret indlysende, dette er stater) med easy_remove_legend_title (). Den fulde grafkode er nedenfor, herunder lagring af grafen i en kaldet variabel positive.

positive <- ggplot (stater2, aes (x = dato, y = positive, farve = 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,

Dernæst vil jeg gerne se på negativ koronavirus testresultater for at se, om de stiger med lignende hastigheder som positive. Jeg bruger den samme kode, men skifter bare y-kolonnen til negativ.

negativer <- ggplot (stater2, aes (x = dato, y = negativ, farve = 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 ("titel") +

easy_remove_y_axis ("titel") +

easy_remove_legend_title ()

Sharon Machlis,

Der ser ud til at være en større stigning i positive end negativer i Louisiana. Selvom vi ikke ved, om det er fordi testkriterierne er ændret eller noget andet.

Det ville være nyttigt at se disse to grafer side om side. Det er her patchworkpakken kommer ind.

Med kun disse to kodelinjer indlæser den første patchwork-pakken:

bibliotek ("patchwork")

positive + negativer

Jeg får dette:

Sharon Machlis,

Det er utroligt nemt at placere flere grafer med patchwork. For mere om, hvordan du tilpasser layout, gå til patchwork-webstedet.

Jeg kan nu gå tilbage og bruge ggeasy til at fjerne en af ​​legenderne, så der ikke er to, og derefter køre patchwork igen:

negativer <- negativer +

easy_remove_legend ()

positive + negativer

Det er klart, ggeasy er ret nyttigt til hurtig - og nem - dataudforskning!

For flere R-tip, gå til siden "Gør mere med R" på eller tjek YouTube-playlisten "Gør mere med R".