ggplot2|使用element_text()自定义Text的属性
专题介绍:R是一种广泛用于数据分析和统计计算的强大语言,于上世纪90年代开始发展起来。得益于全世界众多 爱好者的无尽努力,大家继而开发出了一种基于R但优于R基本文本编辑器的R Studio(用户的界面体验更好)。也正是由于全世界越来越多的数据科学社区和用户对R包的慷慨贡献,让R语言在全球范围内越来越流行。其中一些R包,例如MASS,SparkR, ggplot2,使数据操作,可视化和计算功能越来越强大。R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。R作为一种统计分析软件,是集统计分析与图形显示于一体的。它可以运行于UNIX、Windows和Macintosh的操作系统上,而且嵌入了一个非常方便实用的帮助系统,相比于其他统计分析软件,R的学术性开发比较早,适合生物学和医学等学术学科的科研人员使用。
【R语言】开通了R语言群,大家相互学习和交流,请扫描下方二维码,备注:姓名-R群,我会邀请你入群,一起进步和成长。
本文分享用element_text()自定义Text的属性,包括颜色、字体、大小等信息。我们想一下,在一幅图中,有哪些地方会涉及到Text呢?
下面这幅图,清楚地告诉我们element_text()可以配置各种Text。
可以发现与text相关,有如下内容:
1 整体图的文本信息,图的标签信息、主标题,副标题,标注来源
2 坐标轴相关的文本信息,x轴和y轴的标题文本信息、x轴和y轴的刻度文本信
3 图例相关的文本信息,图例的标题、图例标注的文本信息
我们举例说明,如何使用element_text()函数对上述提及的10种文本信息进行自定义和个性化管理,从而让我们的图形文本信息展示更直观和美丽。我们先看一下element_text()函数的结构,从函数里的参数信息了解它可以改变和配置那些属性。
我们常用的参数配置包括颜色控制、位置控制、字体控制和大小控制等,具体是那个参数发挥作用,看参数名称就一目了然了。
我们首先生成一幅简单的图形,尽量包括各种文本信息。
library(tidyverse)
library(palmerpenguins)
theme_set(theme_bw(16))
p <- penguins %>%
drop_na() %>%
ggplot(aes(x=flipper_length_mm,
y=bill_length_mm,
color=species,
shape=sex))+
geom_point()+
labs(title="Palmer Penguins",
subtitle="Flipper Length vs Bill Length",
caption="@RUser",
tag = 'A'
)
p
效果图如下:
一、主图相关的文本信息做自定义
关注的文本信息有plot.title、plot.subtitle、plot.caption和plot.tag。参照代码如下:
# 字体设置
windowsFonts(
# 中文字体
lishu = windowsFont(family = "LiSu"), # 隶书
yahei = windowsFont(family = "Microsoft YaHei"), # 微软雅黑
xinwei = windowsFont(family = "STXingwei"), # 华文新魏
kaiti = windowsFont(family = "KaiTi"), # 楷体
heiti = windowsFont(family = "SimHei"), # 黑体
# 英文字体
arial = windowsFont(family = "Arial"), # Arial字体
newman = windowsFont(family = "Times New Roman"), #Times New Roman字体
hand = windowsFont(family = "Lucida Calligraphy"), # Lucida手写体
Helvetica = windowsFont(family = "Helvetica") # 印刷体
)
p + theme(plot.title= element_text(size=24,
color="blue",
face="bold",
family = "lishu"), # 主标题文本信息控制
plot.subtitle= element_text(size=16,
color="red",
face="bold"), # 副标题文本信息控制
plot.caption= element_text(size=16,
color="pink",
face="bold"), # 来源备注文本信息控制
plot.tag = element_text(size=16,
color="red",
face="bold") # 图形标注文本信息控制
)
效果图如下:
二、坐标轴相关文本信息自定义
关注的文本信息包括axis.title.x、axis.title.y、axis.text.x和axis.text.y。
参考代码如下:
p + theme(axis.title.x = element_text(size=16,
color="purple",
face="bold",
angle=0), # x轴标题文本信息控制
axis.title.y = element_text(size=16,
color="purple",
face="bold",
angle=90), # y轴标题文本信息控制
axis.text.x= element_text(family = "lishu",
face="bold", colour="black",
size=10), # x轴刻度文本信息控制
axis.text.y = element_text(family = "lishu",
face="bold",
colour="black",
size=10) # y轴刻度文本信息控制
)
效果图如下:
三、图例相关文本信息自定义
关注的文本信息包括:legend.title和legend.text。
参考代码如下:
p + theme(legend.title=element_text(color="purple",
face="bold",
size=12), # 图例标题文本信息控制
legend.text=element_text(family = "lishu",
face="bold",
color="green",
size=10) #图例标注文本信息控制
)
ggsave("图例相关文本信息自定义示范图形例子.png")
效果图如下:
本文R代码完整版:
######################
#文本信息自定义管理
######################
library(tidyverse)
library(palmerpenguins)
theme_set(theme_bw(16))
p <- penguins %>%
drop_na() %>%
ggplot(aes(x=flipper_length_mm,
y=bill_length_mm,
color=species,
shape=sex))+
geom_point()+
labs(title="Palmer Penguins",
subtitle="Flipper Length vs Bill Length",
caption="@RUser",
tag = 'A'
)
p
# 一、主图相关的文本信息做自定义
# 字体设置
windowsFonts(
# 中文字体
lishu = windowsFont(family = "LiSu"), # 隶书
yahei = windowsFont(family = "Microsoft YaHei"), # 微软雅黑
xinwei = windowsFont(family = "STXingwei"), # 华文新魏
kaiti = windowsFont(family = "KaiTi"), # 楷体
heiti = windowsFont(family = "SimHei"), # 黑体
# 英文字体
arial = windowsFont(family = "Arial"), # Arial字体
newman = windowsFont(family = "Times New Roman"), #Times New Roman字体
hand = windowsFont(family = "Lucida Calligraphy"), # Lucida手写体
Helvetica = windowsFont(family = "Helvetica") # 印刷体
)
p + theme(plot.title= element_text(size=24,
color="blue",
face="bold",
family = "lishu"), # 主标题文本信息控制
plot.subtitle= element_text(size=16,
color="red",
face="bold"), # 副标题文本信息控制
plot.caption= element_text(size=16,
color="pink",
face="bold"), # 来源备注文本信息控制
plot.tag = element_text(size=16,
color="red",
face="bold") # 图形标注文本信息控制
)
# 二、坐标轴相关文本信息自定义
p + theme(axis.title.x = element_text(size=16,
color="purple",
face="bold",
angle=0), # x轴标题文本信息控制
axis.title.y = element_text(size=16,
color="purple",
face="bold",
angle=90), # y轴标题文本信息控制
axis.text.x= element_text(family = "lishu",
face="bold", colour="black",
size=10), # x轴刻度文本信息控制
axis.text.y = element_text(family = "lishu",
face="bold",
colour="black",
size=10) # y轴刻度文本信息控制
)
# 三、图例相关文本信息自定义
p + theme(legend.title=element_text(color="purple",
face="bold",
size=12), # 图例标题文本信息控制
legend.text=element_text(family = "lishu",
face="bold",
color="green",
size=10) #图例标注文本信息控制
)
ggsave("图例相关文本信息自定义示范图形例子.png")
关于利用ggplot2包的element_text()函数对10种文本信息做自定义控制,有什么问题,请留言或者加入群,一起讨论。
参考资料:
1https://cmdlinetips.com/2021/05/tips-to-customize-text-color-font-size-in-ggplot2-with-element_text/
如何说一口流利的英语?伙伴们可以看下这个视频,若是有启发,请点赞、关注和分享。
好书推荐
3 推断统计与数据科学,moderndive和tidyverse包
4 R for machine learning,从经典的机器学习算法入手
5 R for everyone,人人都可学R和用R,以发现数据里的价值
请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!