ggplot 添加文本_在R中的ggplot2文本中添加颜色

ggplot 添加文本

ggplot2软件包功能强大且几乎可以无限制地进行自定义,但有时进行一些细微调整可能是一个挑战。 ggtext软件包旨在简化可视化文件中的样式文本。 在本教程中,我将完成上个月在RStudio Conference上演示的一个文本样式任务:添加颜色。

如果您想继续,我建议从GitHub安装ggp​​lot2的开发版本。 通常,会议上显示的某些内容尚未在CRAN上。 ggtext绝对不适用于ggplot的某些旧版本。

必须从GitHub安装ggtext,因为在我撰写本文时,该软件包尚未在CRAN上。 我使用remotes::install_github()从GitHub安装R包,尽管其他几个选项(例如devtools::install_github()工作。 请注意,在下面的代码中,我包含了参数build_vignettes = TRUE因此我具有软件包vignettes的本地版本。 之后,我加载ggplot2,ggtext和dplyr。

remotes::install_github("tidyverse/ggplot2", build_vignettes = TRUE)
remotes::install_github("wilkelab/ggtext", build_vignettes = TRUE)
library(ggplot2)
library(ggtext)
library(dplyr)

对于演示数据,我将使用将R的相关推文(带有#rstats主题标签)与Python的相关推文(#python)进行比较的数据。 下载最近的推文后,我进行了一些过滤,随机抽取了每个推文的1,000个样本,然后计算出每个组中至少有5个赞,有至少5个推文,包含URL并包含诸如照片或视频。

您可以使用下面的代码块重新创建数据集。 或者,您可以将任何有意义的数据集用作分组的条形图,并相应地修改我的后续图形代码。

Hashtag <- c("#python", "#python", "#python", "#python", "#rstats", "#rstats", "#rstats", "#rstats")
Category <- 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数据帧采用“长”格式:一列用于标签(#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("") +
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"))

第二行的alpha = 0.9只是使条形稍微透明( alpha = 1.0是完全不透明的)。 最后几行自定义图形的外观:使用最小主题,删除x和y轴标签,删除默认网格线以及设置条形颜色。 如果运行代码然后显示my_chart ,则图形应如下my_chart

《ggplot 添加文本_在R中的ggplot2文本中添加颜色》
沙龙·马克斯(IDG)

使用ggplot2创建的堆叠条形图。

接下来,我将使用以下代码添加标题:

my_chart +
labs(title = "#python and #rstats: Comparing 1,000 random tweets")

《ggplot 添加文本_在R中的ggplot2文本中添加颜色》
沙龙·马克斯(IDG)

与标题分组的条形图。

它看起来 。 。 。 好。 但是在单独的RStudio会议上, 图形的魅力 ,威尔·蔡斯告诉我们,传说并不理想(尽管他用更加丰富多彩的语言表达了这一观点)。 他表明,在图形标题中添加颜色可以改善您的图形。 我们可以使用ggtext包轻松地做到这一点。

知道一点内联CSSHTML样式肯定会帮助您自定义文本。 在下面的代码中,我正在使用span标记来分割要影响的文本部分— #python和#rstats。 在每组span标签中,我都设置了一种样式-特别是带有color:文本color:然后设置了我想要的颜色的十六进制值。 除十六进制值外,您还可以使用可用的颜色名称

my_chart +
labs(
title = "<span style='color:#ff8c00'>#python</span> and
<span style='color:#346299'>#rstats</span>: Comparing 1,000 random tweets"
) +
theme(
plot.title = element_markdown()
)

请注意,用ggtext样式化文本有两个部分。 除了将样式添加到标题或其他文本之外,我还需要向具有颜色的任何plot元素添加element_markdown() 。 我在上面的代码中使用plot.title = element_markdown()theme()函数中plot.title = element_markdown()

如果您运行所有代码直到现在,该图应如下所示:

《ggplot 添加文本_在R中的ggplot2文本中添加颜色》
沙龙·马克斯(IDG)

ggplot2图,标题文本中带有颜色。

不过,我发现很难看到此标题文本中的颜色。 我们添加<strong>标记以使文本变为粗体,还添加legend.position = none来删除图例:

my_chart +
labs(
title = "<strong><span style='color:#ff8c00'>#python</span></strong></b> and
<strong><span style='color:#346299'>#rstats</strong></b>: Comparing 1,000 random tweets"
) +
theme(
plot.title = element_markdown(), legend.position = "none"
)

《ggplot 添加文本_在R中的ggplot2文本中添加颜色》
沙龙·马克斯(IDG)

带有粗体和彩色标题文本的图形,并删除了图例。

如果要更改x轴文本的颜色,则需要将带有该信息的数据添加到我正在可视化的数据框中。 在下一个代码块中,我创建一列,将粗斜体红色添加到FiveLikes和FiveRTs类别标签,并将其余样式设置为粗斜体,而不添加红色。 我还增加了仅用于FiveLikes和FiveRTs的字体大小。 (我不会在真实的图表上这样做;我在这里这样做只是为了更容易查看两者之间的差异。)

graph_data <- graph_data %>%
mutate(
category_with_color = ifelse(Category %in% c("FiveLikes", "FiveRTs"),
glue::glue("<strong><i style='color:red;font-size:14px'>{Category}</i></strong>"),
glue::glue("<strong><i>{Category}</i></strong>"))
)

接下来,我需要重新创建图表以使用更新的数据框。 新的图表代码与以前基本相同,但有两个更改:我的x轴现在是新的category_with_color列。 并且,我在theme()函数内的axis.text.x添加了element_markdown()

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 = "<strong><span style='color:#ff8c00'>#python</span></strong></b> and <strong><span style='color:#346299'>#rstats</strong></b>: 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
)

该图现在看起来像这样,x轴上的前两项为红色:

《ggplot 添加文本_在R中的ggplot2文本中添加颜色》
沙龙·马克斯(IDG)

具有程式化的X轴文字的图表。

ggtext还可以做更多的事情,例如创建样式化的文本框并将图像添加到轴。 但是包裹作者克劳斯·威尔克在会议上警告我们不要太疯狂。 ggtext包不支持R Markdown文档可用的所有格式命令。 您可以在ggtext网站上查看最新信息

有关R的更多技巧,请访问https://bit.ly/domorewithR上“用R进行更多操作” 页面IDG TECHtalk YouTube频道上的“ 用R进行更多操作”播放列表

翻译自: https://www.infoworld.com/article/3527449/add-color-to-your-ggplot2-text-in-r.html

ggplot 添加文本

    原文作者:cxq8989
    原文地址: https://blog.csdn.net/cxq8989/article/details/107257119
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞