Ohjelmointi

Lisää väriä ggplot2-tekstiin R: ssä

Ggplot2-paketti on tehokas ja melkein loputtomasti muokattavissa, mutta joskus pienet muutokset voivat olla haaste. Ggtext-paketin tarkoituksena on yksinkertaistaa visualisointien tekstityyliä. Tässä opetusohjelmassa käyn läpi yhden tekstitystehtävän, jonka näin demon viime kuussa RStudio Conference: värin lisääminen.

Jos haluat seurata mukana, suosittelen asentamaan ggplot2: n kehitysversio GitHubista. Jotkut konferenssissa esitetyt asiat eivät olleet vielä CRAN-sovelluksessa. Ja ggtext ei todellakaan toimi joidenkin vanhempien ggplot-versioiden kanssa.

Sinä omistaa ggtextin asentamiseksi GitHubista, koska kirjoittaessani tätä pakettia ei ollut vielä CRAN: lla. käytän kaukosäätimet :: install_github () asentaa R-paketteja GitHubista, vaikka useita muita vaihtoehtoja, kuten devtools :: install_github (), toimi myös. Huomaa, että alla olevaan koodiin sisällytän argumentin koontivignetit = TOSI joten minulla on paikalliset versiot pakettinigneteista. Sen jälkeen ladaan ggplot2, ggtext ja dplyr.

kaukosäätimet :: install_github ("tidyverse / ggplot2", build_vignettes = TOSI)

kaukosäätimet :: install_github ("wilkelab / ggtext", build_vignettes = TOSI)

kirjasto (ggplot2)

kirjasto (ggtext)

kirjasto (dplyr)

Demotiedoissa käytän tietoja, jotka vertaavat R: tä koskevia twiittejä (#rstats-hashtagilla) Pythonia (#python) koskeviin twiitteihin. Ladattuani viimeisimmät twiitit suodatin jonkin verran, otin satunnaisen näytteen, joka oli 1 000 kutakin, ja laskin sitten, kuinka monella ryhmässä oli vähintään viisi tykkäystä, minulla oli vähintään viisi uudelleentwiittausta, sisällytin URL-osoitteen ja sisälsinin median, kuten kuvan tai video.

Voit luoda tietojoukon uudelleen alla olevalla koodilohkolla. Tai voit käyttää mitä tahansa järkevää tietojoukkoa ryhmiteltynä pylväskaaviona ja muokata seuraavaa kaaviokuvaa vastaavasti.

Hashtag <- c ("# python", "#python", "#python", "#python", "#rstats", "#rstats", "#rstats", "#rstats")

Luokka <- c ("FiveLikes", "FiveRTs", "HasURL", "HasMedia", "FiveLikes", "FiveRTs", "HasURL", "HasMedia")

NumTweets <- c (179, 74, 604, 288, 428, 173, 592, 293)

graph_data <- data.frame (Hashtag, Category, NumTweets, stringsAsFactors = FALSE)

graph_data datakehys on ”pitkässä” muodossa: yksi sarake hashtagille (#rstats tai #python), yksi mittaamalleni luokalle ja yksi sarake arvoille.

str (graph_data) 'data.frame': 8 obs. 3 muuttujasta: $ Hashtag: chr "#python" "#python" "#python" "#python" ... $ Category: chr "FiveLikes" "FiveRTs" "HasURL" "HasMedia" ... $ NumTweets: num 179 74604288428173592293

Se on tyypillisesti haluamasi rakenne useimmille ggplot-kaavioille.

Seuraavaksi luon ryhmitetyn pylväskaavion ja tallennan sen muuttujaan oma_taulukko.

oma_taulukko <- ggplot (kuvaajan tiedot, aes (x = luokka, y = NumTweets, täyttö = hashtag)) +

geom_col (sijainti = "väistää", alfa = 0,9) +

teema_minimaali () +

xlab ("") +

ylab ("") +

teema (panel.grid.major = element_blank (), panel.grid.minor = element_blank (), panel.background = element_blank (), axis.line = element_line (color = "harmaa")) +

scale_fill_manual (arvot = c ("# ff8c00", "# 346299"))

alfa = 0,9 rivillä kaksi vain tekee palkit hieman läpinäkyviksi (alfa = 1,0 on täysin läpinäkymätön). Muutama viimeinen rivi mukauttaa kuvaajan ulkoasua: käyttämällä minimaalista teemaa, poistamalla x- ja y-akselitarrat, poistamalla oletusruudukon viivat ja asettamalla palkkien värit. Kaavion pitäisi näyttää tältä, jos suoritat koodin ja sitten näytät oma_taulukko:

Sharon Machlis,

Seuraavaksi lisätään otsikko tällä koodilla:

oma_taulukko +

laboratoriot (title = "#python ja #rstats: Vertaamalla 1000 satunnaista twiittiä")

Sharon Machlis,

Se näyttää . . . OK. Mutta erillisessä RStudio-konferenssissa, The Glamour of Graphics, Will Chase kertoi meille, että legendat ovat vähemmän kuin ihanteelliset (vaikka hän esitti tämän asian hieman värikkäämmällä kielellä). Hän osoitti, että värien lisääminen suoraan kaavion otsikkoon voi parantaa grafiikkaasi. Voimme tehdä sen melko helposti ggtext-paketilla.

Pienen HTML-tyylin tunteminen in-line CSS: llä auttaa varmasti mukauttamaan tekstiä. Alla olevassa koodissa käytän span-tunnisteita leikkaamaan ne tekstin osat, joihin haluan vaikuttaa - #python ja #rstats. Jokaisessa span-tunnistesarjassa asetan tyylin - erityisesti tekstin värin väri: ja sitten haluamasi värin hex-arvo. Voit myös käyttää käytettävissä olevaa väriä nimet lisäksi hex-arvot.

oma_taulukko +

laboratoriot (

otsikko = "#python ja

#rstats: Verrataan 1000 satunnaista twiittiä "

) +

teema(

plot.title = element_markdown ()

)

Huomaa, että ggtext-tekstin muotoilussa on kaksi osaa. Sen lisäksi, että lisän tyylini otsikkoon tai muuhun tekstiin, minun on lisättävä element_markdown () mihin tahansa juoni-elementin väreihin. Tein sen yllä olevassa koodissa a: n sisällä teema() toiminto plot.title = element_markdown ().

Jos suoritat kaiken koodin tähän asti, kaavion pitäisi näyttää tältä:

Sharon Machlis,

Minusta on kuitenkin hieman vaikea nähdä tämän otsikkotekstin värejä. Lisätään -tunnisteet tekevän tekstistä lihavoitua, ja lisäämme myös legend.position = ei mitään poistaa selitteen:

oma_taulukko +

laboratoriot (

otsikko = "#python ja

#stat: Verrataan 1000 satunnaista twiittiä "

) +

teema(

plot.title = element_markdown (), legend.position = "ei mitään"

)

Sharon Machlis,

Jos haluan muuttaa x-akselin tekstin väriä, minun on lisättävä tiedot näiden tietojen kanssa visualisoitavaan datakehykseen. Seuraavassa koodilohkossa luon sarakkeen, joka lisää lihavoidun kursivoidun punaisen FiveLikes- ja FiveRTs-luokan tarroihin ja tyylittää loput lihavoituna kursiivilla lisäämättä punaista. Lisäsin myös fontin kokoa vain FiveLikes- ja FiveRT-levyille. (En tekisi sitä oikealla kuvaajalla; teen sen täällä vain helpottaakseni näiden kahden erojen havaitsemista.)

graph_data%

muuttua(

category_with_color = ifelse (Luokan%% c: ssä ("FiveLikes", "FiveRTs"),

liima :: liima ("{Kategoria}"),

liima :: liima ("{Kategoria}"))

)

Seuraavaksi minun on luotava kaavio uudelleen päivitetyn datakehyksen käyttöä varten. Uusi kaavakoodi on pääosin sama kuin aiemmin, mutta siinä on kaksi muutosta: Oma x-akseli on nyt uusi category_with_colour kanssa sarake. Ja lisäsin element_markdown () että axis.text.x sisällä teema() toiminto:

ggplot (kuvaajan_tiedot, aes (x = luokan_värillä, y = NumTweets, täyttö = hashtag)) +

geom_col (sijainti = "väistää", alfa = 0,9) +

teema_minimaali () +

xlab ("") +

ylab ("") +

teema (panel.grid.major = element_blank (), panel.grid.minor = element_blank (), panel.background = element_blank (), axis.line = element_line (color = "harmaa")) +

scale_fill_manual (arvot = c ("# ff8c00", "# 346299")) +

laboratoriot (

otsikko = "#python ja #stat: Verrataan 1000 satunnaista twiittiä "

) +

teema(

plot.title = element_markdown (), legend.position = "ei mitään",

axis.text.x = element_markdown () # Lisättiin element_markdown () teema axis.text.x -teemaan

)

Kaavio näyttää nyt tältä, ja x-akselin kaksi ensimmäistä kohdetta ovat punaisia:

Sharon Machlis,

Ggtextillä voi tehdä enemmän, kuten luoda tyyliteltyjä tekstiruutuja ja lisätä kuvia akseleihin. Mutta paketin kirjoittaja Claus Wilke varoitti meitä konferenssissa olemasta liian hulluja. Ggtext-paketti ei tue kaikkia muotoilukomentoja, jotka ovat käytettävissä R Markdown -asiakirjoille. Voit tarkistaa viimeisimmät tiedot ggtext-verkkosivustolta.

Saat lisää R-vinkkejä siirtymällä Do More With R -sivulle osoitteessa //bit.ly/domorewithR tai TECHtalk YouTube -kanavan Do More With R -soittolistaan.