Programmēšana

Pievienojiet krāsu savam ggplot2 tekstam R

Pakete ggplot2 ir spēcīga un gandrīz bezgalīgi pielāgojama, taču dažreiz nelieli pielāgojumi var būt izaicinājums. Paketes ggtext mērķis ir vienkāršot vizualizāciju teksta veidošanu. Šajā apmācībā es izstaigāšu vienu teksta veidošanas uzdevumu, ko pagājušajā mēnesī redzēju demonstrācijā RStudio konferencē: krāsu pievienošana.

Ja vēlaties sekot līdzi, iesaku no GitHub instalēt ggplot2 izstrādes versiju. Dažas konferences laikā rādītās lietas vēl nebija CRAN. Un ggtext noteikti nedarbojas ar dažām vecākām ggplot versijām.

Jūs ir lai instalētu ggtext no GitHub, jo laikā, kad to uzrakstīju, pakete vēl nebija CRAN. ES izmantoju pultis :: install_github () instalēt R pakotnes no GitHub, kaut arī vairākas citas iespējas, piemēram, devtools :: install_github (), darbs arī. Ņemiet vērā, ka zemāk esošajā kodā es iekļauju argumentu build_vignettes = PATIESA tāpēc man ir vietējās paketes vinjetes versijas. Pēc tam es ielādēju ggplot2, ggtext un dplyr.

pultis :: install_github ("tidyverse / ggplot2", build_vignettes = TRUE)

pultis :: install_github ("wilkelab / ggtext", build_vignettes = TRUE)

bibliotēka (ggplot2)

bibliotēka (ggtext)

bibliotēka (dplyr)

Demonstrācijas datiem es izmantošu datus, salīdzinot tvītus par R (ar #rstats hashtag) ar tweets par Python (#python). Pēc jaunāko tvītu lejupielādes es veicu filtrēšanu, paņēmu nejaušu izlasi no 1000 un pēc tam aprēķināju, cik daudzām katrai grupai ir vismaz pieci simpātijas, vismaz pieci retvīti, iekļauti URL un multivides faili, piemēram, foto vai video.

Jūs varat no jauna izveidot datu kopu ar zemāk esošo kodu bloku. Vai arī jūs varat izmantot jebkuru datu kopu, kurai ir jēga, kā sagrupētu joslu diagrammu, un attiecīgi modificēt manu nākamo diagrammas kodu.

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

<- c kategorija ("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)

The graph_data datu rāmis ir “garā” formātā: viena kolonna hashtag (#rstats vai #python), viena kategorijai, kuru mēru, un viena kolonna vērtībām.

str (graph_data) 'data.frame': 8 obs. no 3 mainīgajiem: $ Hashtag: chr "#python" "#python" "#python" "#python" ... $ Category: chr "FiveLikes" "FiveRTs" "HasURL" "HasMedia" ... $ NumTweets: num 179 74 604 288 428 173 592 293

Parasti tādu struktūru vēlaties iegūt lielākajai daļai ggplot diagrammu.

Tālāk es izveidošu grupētu joslu diagrammu un saglabāju to mainīgajā my_chart.

my_chart <- ggplot (graph_data, aes (x = Kategorija, y = NumTweets, aizpildīt = Hashtag)) +

geom_col (pozīcija = "dodge", alfa = 0,9) +

theme_minimal () +

xlab ("") +

ylab ("") +

motīvs (panel.grid.major = element_blank (), panel.grid.minor = element_blank (), panel.background = element_blank (), axis.line = element_line (color = "pelēks")) +

scale_fill_manual (vērtības = c ("# ff8c00", "# 346299"))

The alfa = 0,9 otrajā rindā stieņi tikai kļūst nedaudz caurspīdīgi (alfa = 1,0 ir pilnīgi necaurspīdīgs). Dažas pēdējās rindas pielāgo diagrammas izskatu: izmantojot minimālo motīvu, atbrīvojoties no x un y ass etiķetēm, noklusējuma režģa līniju noņemšanas un joslu krāsu iestatīšanas. Diagrammai vajadzētu izskatīties šādi, ja palaižat kodu un pēc tam parādīsit my_chart:

Sharon Machlis,

Tālāk es pievienošu nosaukumu ar šo kodu:

my_chart +

laboratorijas (title = "#python un #rstats: 1000 nejaušu tvītu salīdzināšana")

Sharon Machlis,

Tas izskatās . . . LABI. Bet atsevišķā RStudio konferences sesijā The Glamour of Graphics Will Chase mums teica, ka leģendas ir mazāk nekā ideālas (lai gan viņš to izteica nedaudz krāsainākā valodā). Viņš parādīja, ka krāsu pievienošana tieši diagrammas virsrakstā var uzlabot jūsu grafiku. Mēs to varam izdarīt diezgan viegli, izmantojot paketi ggtext.

Zinot nelielu HTML stilu ar rindas CSS, tas noteikti palīdzēs pielāgot tekstu. Tālāk esošajā kodā es izmantoju span tagus, lai atdalītu tās teksta daļas, kuras vēlos ietekmēt - #python un #rstats. Katrā span taga komplektā es iestatīju stilu - īpaši teksta krāsu ar krāsa: un pēc tam vēlamās krāsas sešstūra vērtība. Varat arī izmantot pieejamo krāsu vārdi Papildus sešstūra vērtības.

my_chart +

laboratorijas (

nosaukums = "#python un

#rstats: 1000 nejaušu tvītu salīdzināšana "

) +

motīvs (

plot.title = element_markdown ()

)

Ņemiet vērā, ka teksta veidošanai ar ggtext ir divas daļas. Papildus tam, ka virsrakstam vai citam tekstam esmu pievienojis savu stilu, man tas ir jāpievieno element_markdown () jebkuram sižeta elementam ir krāsas. Es to izdarīju iepriekš minētajā kodā a tēma () funkcija ar plot.title = element_markdown ().

Ja līdz šim palaidāt visu kodu, diagrammai vajadzētu izskatīties šādi:

Sharon Machlis,

Man tomēr ir mazliet grūti saskatīt krāsas šajā virsraksta tekstā. Piebildīsim tagus, lai teksts būtu treknrakstā, un pievienosim arī to leģenda.pozīcija = nav lai noņemtu leģendu:

my_chart +

laboratorijas (

nosaukums = "#python un

#stats: Salīdzinot 1000 nejaušus tvītus "

) +

motīvs (

plot.title = element_markdown (), legend.position = "nav"

)

Sharon Machlis,

Ja es vēlos mainīt x ass teksta krāsu, man dati, kas tiek vizualizēti, jāpievieno ar šo informāciju. Nākamajā kodu blokā es izveidoju kolonnu, kas FiveLikes un FiveRTs kategoriju etiķetēm pievieno treknu slīprakstu un pārējos stilizē kā treknu kursīvu, nepievienojot sarkanu. Es arī palielināju fonta lielumu tikai FiveLikes un FiveRT. (Es to nedarītu uz reāla grafika; es to daru šeit tikai tāpēc, lai būtu vieglāk saskatīt atšķirības starp abiem.)

graph_data%

mutēt (

category_with_color = ifelse (% kategorija% c ("FiveLikes", "FiveRTs"),

līme :: līme ("{Kategorija}"),

līme :: līme ("{Kategorija}"))

)

Tālāk man ir jāizveido diagramma, lai izmantotu atjaunināto datu rāmi. Jaunais diagrammas kods lielākoties ir tāds pats kā iepriekš, bet ar divām izmaiņām: Mana x ass tagad ir jauna category_with_color kolonna. Un, es piebildu element_markdown () uz ass.text.x iekšpusē tēma () funkcija:

ggplot (graph_data, aes (x = category_with_color, y = NumTweets, fill = Hashtag)) +

geom_col (pozīcija = "dodge", alfa = 0,9) +

theme_minimal () +

xlab ("") +

ylab ("") +

motīvs (panel.grid.major = element_blank (), panel.grid.minor = element_blank (), panel.background = element_blank (), axis.line = element_line (color = "pelēks")) +

scale_fill_manual (vērtības = c ("# ff8c00", "# 346299")) +

laboratorijas (

nosaukums = "#python un #stats: Salīdzinot 1000 nejaušus tvītus "

) +

motīvs (

plot.title = element_markdown (), legend.position = "nav",

axis.text.x = element_markdown () # Pievienots element_markdown () tēmai axis.text.x

)

Diagramma tagad izskatās šādi, un pirmie divi vienumi uz x ass ir sarkanā krāsā:

Sharon Machlis,

Ar ggtext var darīt vairāk, piemēram, izveidot stilizētus tekstlodziņus un pievienot attēlus asīm. Bet pakas autors Klauss Vilke konferencē mūs brīdināja, lai mēs nenākam pārāk traki. Pakete ggtext neatbalsta visas formatēšanas komandas, kas ir pieejamas R Markdown dokumentiem. Jaunāko varat apskatīt vietnē ggtext.

Lai iegūtu vairāk R padomu, dodieties uz lapu Do More With R vietnē //bit.ly/domorewithR vai atskaņošanas sarakstu Do More With R TECHtalk YouTube kanālā.

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