Programovanie

Pridajte farbu do svojho textu ggplot2 v R.

Balík ggplot2 je výkonný a takmer nekonečne prispôsobiteľný, ale niekedy môžu byť malé úpravy výzvou. Cieľom balíka ggtext je zjednodušiť tvarovanie textu vo vašich vizualizáciách. V tomto výučbe sa budem venovať jednej úlohe textového stylingu, ktorú som minulý mesiac videl na konferencii RStudio: demo’d: pridanie farby.

Ak by ste chceli pokračovať, navrhujem nainštalovať vývojovú verziu ggplot2 z GitHubu. Všeobecne platí, že niektoré veci zobrazené na konferencii ešte neboli v systéme CRAN. A ggtext určite nefunguje s niektorými staršími verziami ggplot.

Vy mať nainštalovať ggtext z GitHubu, pretože v čase, keď som to písal, balík ešte nebol na CRANe. používam remotes :: install_github () inštalovať balíčky R z GitHubu, aj keď niekoľko ďalších možností, ako napr devtools :: install_github (), pracuj tiež. Všimnite si, že v kóde nižšie uvádzam argument build_vignettes = TRUE takže mám lokálne verzie balíkových vignet. Potom načítam ggplot2, ggtext a dplyr.

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

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

knižnica (ggplot2)

knižnica (ggtext)

knižnica (dplyr)

Na ukážkové údaje použijem údaje na porovnanie tweetov o R (s hashtagom #rstats) s tweetmi o Pythone (#python). Po stiahnutí posledných tweetov som vykonal nejaké filtrovanie, vzal som náhodne 1 000 vzoriek každého z nich a potom vypočítal, koľko z nich v každej skupine malo najmenej päť označení páči sa mi, malo najmenej päť retweetov, obsahovalo adresu URL a obsahovalo médiá ako fotografia alebo video.

Sadu údajov môžete znova vytvoriť pomocou bloku kódu uvedeného nižšie. Alebo môžete použiť akýkoľvek súbor údajov, ktorý má zmysel, ako zoskupený stĺpcový graf a podľa toho upraviť môj nasledujúci kód grafu.

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

Kategória <- 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)

The graph_data dátový rámec je v „dlhom“ formáte: jeden stĺpec pre značku hash (#rstats alebo #python), jeden pre kategóriu, ktorú meriam, a jeden stĺpec pre hodnoty.

str (graph_data) 'data.frame': 8 obs. z 3 premenných: $ Hashtag: chr "#python" "#python" "#python" "#python" ... $ Kategória: chr "FiveLikes" "FiveRTs" "HasURL" "HasMedia" ... $ NumTweets: num 179 74 604 288 428 173 592 293

To je zvyčajne štruktúra, ktorú chcete pre väčšinu grafov ggplot.

Ďalej vytvorím zoskupený stĺpcový graf a uložím ho do premennej my_chart.

my_chart <- ggplot (graph_data, aes (x = kategória, y = NumTweets, fill = Hashtag)) +

geom_col (position = "dodge", alpha = 0,9) +

téma_minimálne () +

xlab ("") +

ylab ("") +

téma (panel.grid.major = element_blank (), panel.grid.minor = element_blank (), panel.background = element_blank (), axis.line = element_line (color = "grey")) +

scale_fill_manual (values ​​= c ("# ff8c00", "# 346299"))

The alfa = 0,9 na druhej linke sú pruhy trochu priehľadné (alfa = 1,0 je úplne nepriehľadný). Posledných niekoľko riadkov upravuje vzhľad grafu: použitie minimálnej témy, zbavenie sa štítkov osí x a y, odstránenie predvolených čiar mriežky a nastavenie farieb pruhov. Graf by mal vyzerať takto, ak spustíte kód a potom ho zobrazíte my_chart:

Sharon Machlis,

Ďalej pridám nadpis s týmto kódom:

my_chart +

laboratóriá (title = "#python a #rstats: Porovnanie 1 000 náhodných tweetov")

Sharon Machlis,

To vyzerá . . . Ok. Ale na samostatnom zasadnutí konferencie RStudio, The Glamour of Graphics, nám Will Chase povedal, že legendy sú menej ako ideálne (aj keď to uviedol trochu farebnejším jazykom). Ukázal, že pridanie farieb priamo do nadpisu grafu môže zlepšiť vašu grafiku. To môžeme urobiť pomerne ľahko pomocou balíka ggtext.

Poznať malý štýl HTML s in-line CSS vám určite pomôže prispôsobiť text. V nižšie uvedenom kóde používam značky span na oddelenie častí textu, ktoré chcem ovplyvniť - #python a #rstats. V rámci každej sady značiek rozpätia som nastavil štýl - konkrétne farbu textu pomocou farba: a potom hexadecimálna hodnota farby, ktorú chcem. Môžete tiež použiť dostupnú farbu mien Okrem tohoto hexadecimálne hodnoty.

my_chart +

laboratóriá (

title = "#python a

#rstats: Porovnanie 1 000 náhodných tweetov “

) +

téma (

plot.title = element_markdown ()

)

Upozorňujeme, že štylizácia textu pomocou ggtextu má dve časti. Okrem pridania môjho štýlu do nadpisu alebo iného textu musím pridať element_markdown () na akýkoľvek prvok grafu má farby. Urobil som to vo vyššie uvedenom kóde vo vnútri a téma () funkcia s plot.title = element_markdown ().

Ak doteraz spúšťate celý kód, graf by mal vyzerať takto:

Sharon Machlis,

Je mi však trochu ťažko vidieť farby v tomto nadpise. Poďme pridať tagy, aby bol text tučný, a pridajme tiež legenda.pozícia = žiadna odstrániť legendu:

my_chart +

laboratóriá (

title = "#python a

#rstats: Porovnávanie 1 000 náhodných tweetov “

) +

téma (

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

)

Sharon Machlis,

Ak chcem zmeniť farbu textu na osi x, musím do údajov, ktoré vizualizujem, pridať údaje s týmito informáciami. V nasledujúcom bloku kódu vytvorím stĺpec, ktorý pridá tučnú kurzívu červenú do štítkov kategórie FiveLikes a FiveRTs a ostatné štýly štýlom ako tučná kurzíva bez pridania červenej. Tiež som zväčšil veľkosť písma iba pre FiveLikes a FiveRTs. (Nerobil by som to na skutočnom grafe; robím to tu len preto, aby som lepšie videl rozdiely medzi nimi.)

graph_data%

mutovať(

category_with_color = ifelse (kategória% v% c ("FiveLikes", "FiveRTs"),

lepidlo :: lepidlo ("{Category}"),

lepidlo :: lepidlo ("{Category}"))

)

Ďalej potrebujem znovu vytvoriť graf, aby som mohol používať aktualizovaný dátový rámec. Nový kód grafu je väčšinou rovnaký ako predtým, ale má dve zmeny: Moja os x je teraz nová category_w_color stĺpec. A dodal som element_markdown () do os.text.x vnútri téma () funkcia:

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

geom_col (position = "dodge", alpha = 0,9) +

téma_minimálne () +

xlab ("") +

ylab ("") +

téma (panel.grid.major = element_blank (), panel.grid.minor = element_blank (), panel.background = element_blank (), axis.line = element_line (color = "grey")) +

scale_fill_manual (values ​​= c ("# ff8c00", "# 346299")) +

laboratóriá (

title = "#python a #rstats: Porovnávanie 1 000 náhodných tweetov “

) +

téma (

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

axis.text.x = element_markdown () # Pridané element_markdown () do osi.text.x v téme

)

Graf teraz vyzerá takto, prvé dve položky na osi x sú červené:

Sharon Machlis,

S ggtextom môžete robiť viac, napríklad vytvárať štylizované textové polia a pridávať obrázky k osiam. Autor balíka Claus Wilke nás ale na konferencii varoval, aby sme sa príliš nezbláznili. Balík ggtext nepodporuje všetky príkazy na formátovanie, ktoré sú k dispozícii pre dokumenty programu R Markdown. Najnovšie sa môžete pozrieť na webovej stránke ggtext.

Ďalšie tipy R nájdete na stránke Urob viac s R na adrese //bit.ly/domorewithR alebo v zozname skladieb Urob viac s R na kanáli TECHtalk na YouTube.

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