הוסף צבע לטקסט ggplot2 שלך ב- R.

חבילת ggplot2 עוצמתית וניתנת להתאמה כמעט אינסופית, אך לפעמים שינויים קטנים יכולים להוות אתגר. חבילת ggtext נועדה לפשט טקסט עיצוב בעיצוב ההדמיות שלך. במדריך זה אעבור על משימה אחת לעיצוב טקסטים שראיתי בהדגמה בכנס RStudio בחודש שעבר: הוספת צבע.

אם תרצה לעקוב אחריו, אני מציע להתקין את גרסת הפיתוח של ggplot2 מ- GitHub. באופן כללי, כמה דברים שהוצגו בכנס עדיין לא היו ב- CRAN. ו- ggtext בהחלט לא עובד עם כמה גרסאות ישנות יותר של ggplot.

אתה צריך להתקין ggtext מן GitHub, שכן במועד זה כתבתי, החבילה לא הייתה עדיין על קראן. אני משתמש remotes::install_github()בהתקנת חבילות R מ- GitHub, אם כי כמה אפשרויות אחרות, כגון devtools::install_github(), עובדות גם כן. שים לב שבקוד שלמטה אני כולל את הטיעון build_vignettes = TRUEכך שיש לי גרסאות מקומיות של תווי חבילה. לאחר מכן, אני טוען את ggplot2, ggtext ו- dplyr.

שלטים :: install_github ("tidyverse / ggplot2", build_vignettes = TRUE)

שלטים :: install_github ("wilkelab / ggtext", build_vignettes = TRUE)

ספרייה (ggplot2)

ספרייה (ggtext)

ספרייה (dplyr)

לנתוני הדגמה, אשתמש בנתונים המשווים ציוצים על R (עם hashtag #rstats) עם ציוצים על Python (#python). לאחר הורדת ציוצים אחרונים, ביצעתי סינון, לקחתי מדגם אקראי של 1,000 מכל אחד, ואז חישבתי כמה בכל קבוצה יש לפחות חמישה לייקים, היו לי לפחות חמישה ציוצים מחדש, כללו כתובת URL וכלל מדיה כמו תמונה או וִידֵאוֹ.

אתה יכול ליצור מחדש את מערך הנתונים באמצעות גוש הקוד שלמטה. לחלופין, תוכל להשתמש בכל מערכת נתונים הגיונית כתרשים עמודות מקובץ ולשנות את קוד הגרף הבא שלי בהתאם.

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

קטגוריה <- 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מסגרת הנתונים נמצא "ארוך" פורמט: עמודה אחת עבור hashtag (#rstats או #python), אחד עבור הקטגוריה אני מודד, ועמודה אחת הערכים.

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

זה בדרך כלל המבנה הרצוי עבור רוב הגרפים של ggplot. 

לאחר מכן אצור תרשים עמודות מקובץ ואשמור אותו במשתנה my_chart.

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

geom_col (position = "dodge", alpha = 0.9) +

theme_minimal () +

xlab ("") +

ylab ("") +

ערכת נושא (panel.grid.major = element_blank (), panel.grid.minor = element_blank (), panel.background = element_blank (), axis.line = element_line (color = "grey")) +

scale_fill_manual (ערכים = c ("# ff8c00", "# 346299"))

alpha = 0.9על קו שני רק הופך את הסורגים קצת שקוף ( alpha = 1.0אטום לחלוטין). השורות האחרונות התאמה אישית של מראה הגרף: שימוש בנושא מינימלי, היפטרות מתוויות ציר ה- X ו- Y, הסרת קווי ברירת המחדל של הרשת והגדרת צבעים לסורגים. הגרף אמור להיראות כך אם אתה מריץ את הקוד ואז מציג my_chart:

שרון מכליס,

לאחר מכן אוסיף כותרת עם קוד זה:

my_chart +

מעבדות (title = "#python ו- #rstats: השוואה של 1,000 ציוצים אקראיים")

שרון מכליס,

זה נראה . . . בסדר. אבל בכנס נפרד של RStudio, זוהר הגרפיקה, וויל צ'ייס אמר לנו שהאגדות פחות אידיאליות (אם כי הוא העלה את הנקודה הזו בשפה קצת יותר צבעונית). הוא הראה שהוספת צבעים ממש בכותרת הגרף יכולה לשפר את הגרפיקה שלך. אנו יכולים לעשות זאת די בקלות עם חבילת ggtext.

הכרת מעט עיצוב HTML עם CSS מקוון בהחלט תעזור לך להתאים אישית את הטקסט שלך. בקוד שלמטה, אני משתמש בתגי טווח כדי לחלק את חלקי הטקסט שאני רוצה להשפיע עליו - #python ו- #rstats. בתוך כל קבוצה של תגי טווח אני מגדיר סגנון - ספציפית צבע טקסט עם color:ואז ערך ה- hex של הצבע שאני רוצה. ניתן גם להשתמש בשמות צבע זמינים בנוסף לערכי hex .

my_chart +

מעבדות (

title = "#python ו-

#rstats: השוואה של 1,000 ציוצים אקראיים "

) +

נושא(

plot.title = element_markdown ()

)

שים לב שיש שני חלקים לעיצוב טקסט עם ggtext. בנוסף להוספת העיצוב שלי לכותרת או לטקסט אחר, אני צריך להוסיף element_markdown()לכל רכיב בעלילה שיש לו את הצבעים. עשיתי זאת בקוד הנ"ל בתוך theme()פונקציה עם plot.title = element_markdown().

אם אתה מריץ את כל הקוד עד עכשיו, הגרף אמור להיראות כך:

שרון מכליס,

אני מתקשה לראות את הצבעים בטקסט הכותרת הזה. בואו נוסיף תגים כדי שהטקסט יהיה מודגש, ובואו נוסיף גם legend.position = noneכדי להסיר את האגדה: 

my_chart +

מעבדות (

title = " #python ו-

#rstats : השוואה של 1,000 ציוצים אקראיים "

) +

נושא(

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

)

Sharon Machlis,

If I want to change the color of the x-axis text, I need to add data with that information to the data frame I’m visualizing. In the next code block, I create a column that adds bold italic red to the FiveLikes and FiveRTs category labels and styles the rest as bold italic without adding red. I also increased the size of the font just for FiveLikes and FiveRTs. (I wouldn’t do that on a real graph; I do it here only to make it easier to see the differences between the two.)

graph_data %

mutate(

category_with_color = ifelse(Category %in% c("FiveLikes", "FiveRTs"),

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

glue::glue("{Category}"))

)

Next I need to re-create the chart to use the updated data frame. The new chart code is mostly the same as before but with two changes: My x axis is now the new category_with_color column. And, I added element_markdown() to axis.text.x inside the theme() function:

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

geom_col(position="dodge", alpha = 0.9) +

theme_minimal() +

xlab("") +

ylab("") +

theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(), panel.background = element_blank(), axis.line = element_line(colour = "grey")) +

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

labs(

title = "#python and #rstats: Comparing 1,000 random tweets"

) +

theme(

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

axis.text.x = element_markdown() # Added element_markdown() to axis.text.x in theme

)

The graph now looks like this, with the first two items on the x axis in red:

Sharon Machlis,

There is more you can do with ggtext, such as creating stylized text boxes and adding images to axes. But package author Claus Wilke warned us at the conference not to go too crazy. The ggtext package doesn’t support all of the formatting commands that are available for R Markdown documents. You can check out the latest at the ggtext website.

For more R tips, head to the Do More With R page at //bit.ly/domorewithR or the Do More With R playlist on the  TECHtalk YouTube channel.