Gemakkelijker ggplot met het ggeasy R-pakket

Het ggplot2-datavisualisatie R-pakket is extreem krachtig en flexibel. Het is echter niet altijd gemakkelijk om te onthouden hoe u elke taak moet uitvoeren, vooral als u geen frequente gebruiker bent. Hoe verander je de grootte van een grafiektitel? Hoe verwijder je legendatitels? Mijn gebruikelijke oplossing is om RStudio-codefragmenten op te slaan voor dingen die ik moeilijk kan onthouden. Maar er is ook een pakket dat kan helpen: ggeasy.

Zoals de naam al zegt, het doel van de ggeasy is, nou ja, maken ggplot2 gemakkelijk - of op zijn minst easi er . Het heeft wat sommige mensen misschien meer intuïtieve functies vinden voor typische taken, meestal rond tekst- en asopmaak. (Dit pakket heeft geen invloed op de manier waarop lijnen, punten en balken eruitzien en zich gedragen). Alle ggeasy-functies beginnen met, easy_dus het is, ja, gemakkelijk om ze te vinden met behulp van RStudio autocomplete. Hoe dat werkt, kun je zien in de video hierboven.

Als je mijn voorbeeld hieronder wilt volgen, is ggeasy op CRAN, dus je kunt het installeren met install.packages("ggeasy"). Ik zal ook de pakketten ggplot2 (natuurlijk), dplyr, rio en lubridate gebruiken. Later zal ik het patchworkpakket toevoegen voor supereenvoudige plaatsing van meerdere grafieken; dat is ook op CRAN.

Voor dit voorbeeld ga ik gegevens gebruiken over wat de meeste mensen tegenwoordig bezighouden: coronavirus. U kunt een CSV-bestand met gegevens per Amerikaanse staat downloaden van het Coronavirus Tracking Project met

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

destfile = "covid19.csv")

(U kunt de naam van het doelbestand doelbestand alles wat je zou willen.) Ik heb gebruikt rio::import()om de gegevens te importeren, maar u kunt ook gebruik maken van readr::read_csv(), read.csv(), data.table::fread(), of een andere functie om de CSV importeren.

Met rio kwamen de datums binnen als gehele getallen, dus ik zal de ymd()functie van lubridate gebruiken om die kolom in Date-objecten te veranderen:

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

Om een ​​grafiek te maken die niet al te moeilijk te begrijpen is, filter ik deze gegevens voor slechts een paar toestanden, zodat er geen 50 afzonderlijke tijdreekslijnen zijn. Ik koos voor Louisiana om de toename van het aantal gevallen daar te zien - de gouverneur van Louisiana zei dat de staat een van de snelst groeiende gevallen ter wereld is. (Er wordt gespeculeerd dat Mardi Gras in februari een cluster in New Orleans heeft veroorzaakt.) Ik zal ook Massachusetts toevoegen, een staat met ongeveer 50 procent meer mensen dan Louisiana, aangezien ik daar ben gevestigd.

Nadat ik de gegevens heb gefilterd, maak ik een eenvoudige lijngrafiek van de gegevens:

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

ggplot (states2, aes (x = datum, y = positief, kleur = staat)) +

geom_line () +

geom_point () +

theme_minimal () +

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

Sharon Machlis,

Dat is een behoorlijk steile stijging. Een deel hiervan kan te wijten zijn aan een toename van het testen - misschien weten we gewoon van meer gevallen omdat het testen is toegenomen . Ik zal daar zo naar kijken.

Maar eerst, wat dacht je van een paar aanpassingen aan deze grafiek?

Laten we beginnen door de titel van de grafiek groter te maken. Om ggeasy te gebruiken, zou ik beginnen met typen easy_ in het bronpaneel linksboven in RStudio en scrollen totdat ik vind wat ik zoek. 

Sharon Machlis,

easy_plot_title_size()lijkt op de functie die ik nodig heb. Ik kan de grafiektitel wijzigen in 16-punts type met deze code:

ggplot (states2, aes (x = datum, y = positief, kleur = staat)) +

geom_line () +

geom_point () +

theme_minimal () +

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

easy_plot_title_size (16)

Ik kan x-as-tekst roteren easy_rotate_x_labels(90)voor een rotatie van 90 graden en de legendatitel verwijderen (het is vrij duidelijk dat dit staten zijn) met easy_remove_legend_title(). De volledige grafiekcode staat hieronder, inclusief het opslaan van de grafiek in een variabele genaamd positives.

positieven <- ggplot (states2, aes (x = datum, y = positief, kleur = staat)) +

geom_line () +

geom_point () +

theme_minimal () +

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

easy_plot_title_size (16) +

easy_rotate_x_labels (90) +

easy_remove_legend_title ()

Sharon Machlis,

Vervolgens wil ik kijken naar de negatieve testresultaten van het coronavirus, om te zien of ze even snel stijgen als de positieve. Ik gebruik dezelfde code, maar schakel gewoon de y-kolom naar negatieven.

negatieven <- ggplot (states2, aes (x = datum, y = negatief , kleur = staat)) +

geom_line () +

geom_point () +

theme_minimal () +

ggtitle ("Lousiana & Massachusetts Negatieven") +

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,

Er lijkt een grotere stijging te zijn in positieven dan negatieven in Louisiana. Hoewel we niet weten of dat komt doordat de testcriteria zijn veranderd of door iets anders.

Het zou handig zijn om deze twee grafieken naast elkaar te zien. Dat is waar het patchwork-pakket binnenkomt. 

Met slechts deze twee regels code laadt de eerste het patchwork-pakket: 

bibliotheek ("patchwork")

pluspunten + minpunten

Ik snap dit:

Sharon Machlis,

Het is ongelooflijk eenvoudig om meerdere grafieken met patchwork te plaatsen. Ga naar de patchwork-website voor meer informatie over het aanpassen van lay-outs.

Ik kan nu teruggaan en ggeasy gebruiken om een ​​van de legendes te verwijderen, zodat er geen twee zijn, en dan patchwork opnieuw uitvoeren:

negatieven <- negatieven +

easy_remove_legend ()

pluspunten + minpunten

Het is duidelijk dat ggeasy best handig is voor wat snelle - en gemakkelijke - dataverkenning!

Ga voor meer R-tips naar de "Do More With R" -pagina op of bekijk de "Do More With R" YouTube-afspeellijst.