嗨。我是IDG通信公司的Sharon Machlis,现在为您带来《与R一起做更多:在ggplot2中为文本添加颜色》的第42集。
这就是很酷的事情我在RStudio会议了解到,今年之一。而且它比我想象的更容易一点,由于ggtext包。让我们来看看。
我安装GGPLOT2的开发版本从GitHub,以确保我有超级最新版本,因为在一般情况下,有些东西在会议demo'd不在CRAN呢。而ggtext绝对不是做一些旧版本的ggplot的工作。
你必须从GitHub安装ggtext,因为在这段录音中,它没有在CRAN上。我使用remotes包从GitHub安装;devtools也做同样的事情。注意,在我的代码中,我包含了参数build_vignettes = TRUE,所以我的系统上有包的vignettes。
接下来,我将ggplot2、ggtext和dplyr加载到工作会话中。
对于演示数据,我将使用关于R tweet与Python tweet的比较信息。我从每一组中随机抽取1000个样本,做了一些过滤,然后计算每组中有多少:至少有5个赞,至少有5次转发,包含一个URL,以及包含像照片或视频这样的媒体。
如果你想继续学习,你可以从这个视频的InfoWorld文章中下载这个小的汇总数据帧。或者,使用任何有几个组、几个类别和几个值的数据,并且对堆叠条形图有意义。
我要加载数据。它采用“长”格式:一列用于hashtag (#rstats或#python),一列用于我正在度量的类别,然后只有一列带有值。这正是大多数ggplot图所需要的结构。
在这里,我创建了一个基本的分组条形图,并将其保存到一个变量my_chart中。第一行告诉ggplot我使用的是graph_data数据框架,我希望类别列在x轴上,tweet数量在Y轴上,填充颜色基于Hashtag。第二行创建一个柱状图;位置躲避组条而不是堆叠他们。Alpha。9只会让条纹变得有点透明(1是完全不透明的)。
代码的其余部分定制图形的外观。我使用的是最小的主题,摆脱X和Y轴的标签,去掉默认网格线,然后设置条的颜色。现在让我们看看是什么样子。基本图形与一个传奇。
接下来,我将添加标题。看起来不错。但在对一般DataViz公司的最佳实践单独RStudio大会会议,我们被告知,使人们看一个传说在一旁不理想。把权色图中的标题可以为观众更好。让我们做到这一点。
了解一点内联CSS(层叠样式表的缩写)的HTML样式,肯定会帮助您定制文本。在这里,我使用span标记将我想要影响的文本部分—python和rstats分割开来。在span标签中,我设置了一个样式——具体来说是设置文本颜色,然后是我想要的颜色的十六进制值。这是标准的HTML样式,如果您需要简短的解释,在Web上有大量的教程。除了十六进制值之外,您还可以使用可用的颜色名称——当然,您希望在标题和图形中进行任何更改。我来撤销它。
请注意,有两个环节进行。除了增加我的风格的文字,我需要添加element_markdown()到任何剧情元素的颜色已经改变。我这样做,在这里一个主题()函数中。
不过,我发现在这个标题文本中看颜色有点困难。我可以添加强标签,使文本加粗。我还添加了传奇。位置=没有,可以删除图例。
如果我想改变x轴文本的颜色,我需要将该数据添加到我的图形数据中。在这段代码中,我创建了一个列,它将在FiveLikes和fivert类别标签中添加粗体、斜体和红色;其余的样式为粗体斜体,不使用红色。
现在我需要重新创建完整的图表来使用新的、更新的数据框架。这个图表代码与以前基本相同,但有两个变化:我的x轴现在是新的category_with_color列。我还向axis.text添加了element_markdown()。x在theme()函数内。
如果我运行它,希望你能看到x轴标签的变化。
使用ggtext还可以做更多事情,比如创建样式化的文本框和向轴添加图像。但包装作家克劳斯·沃克在会议上警告我们不要太疯狂。因为在R Markdown中可以做的一切在这里还不受支持。这个包正在开发中——你可以在wilkelab.org slash ggtext上查看最新的版本。
这是它为这个情节,感谢收看!For more R tips, head to the Do More With R page at bit-dot-l-y slash do more with R, all lowercase except for the R. You can also find the Do More With R playlist on the YouTube IDG Tech Talk channel -- where you can subscribe so you never miss an episode. Hope to see you next time!