1.6.6 主题系统
主题系统包括绘图区背景、网格线、坐标轴线条等图表的细节部分,而图表风格主要是指绘图区背景、网格线、坐标轴线条等的格式设定所展现的效果。ggplot2图表的主题系统主要对象包括文本(text)、矩形(rect)和线条(line)三大类,对应的函数包括element_text()、element_rect()、element_line(),另外还有element_blank()表示该对象设置为无,具体如表1-6-6所示。其中,我们使用比较多的系统对象是坐标轴的标签(axis.text.x、axis.text.y)、图例的位置与背景(legend.position和legend.background)。X轴标签(axis.text.x)在绘制极坐标柱形图和径向柱形图时会用于调整X轴标签的旋转角度,Y轴标签(axis.text.y)也会用于时间序列峰峦图的Y轴标签的替换等,具体可见后面图表案例的讲解。
由于ggplot2主题设置的内部函数及参数非常多,所以不建议新手直接学习。针对新手,建议使用ggThemeAssist包进行主题设置,用鼠标而不是代码,这样更加方便,也可以直接套用主题模板。
1.ggThemeAssist包
使用ggThemeAssist包,需要先安装shiny包。安装好该包后,在RStudio界面选择“Tools”→“Addins”→“ggplot Theme Assistant”选项,弹出界面如图1-6-24所示。具体使用方法:首先运行函数要画图的ggplot2代码,以加载到内存;然后选中该画图函数,如ggplot;再选择“Tools”→“Addins”“ggplot Theme Assistant”选项,就会出现一个交互式的shiny弹窗,在该弹窗上用鼠标操作;在弹窗中处理完后,点击右上角的“Done”按钮,就将主题代码输出到需要的位置,最后对代码进行微调即可。但是需要注意的是:有的地方可能会少括号或引号。
图1-6-24 ggplot Theme Assistant操作界面
2.套用主题模板
R语言的主题模板包包括ggthemes、ggtech、ggthemer、ggsci、cowplot等。其中ggsci包就是专门为学术图表开发的包。R ggplot2自带的主题模板也有多种,包括theme_gray()、theme_minimal()、theme_bw()、 theme_light()、theme_test()、theme_classic()等函数。相同的数据及数据格式,可以结合不同的图表风格,如图1-6-25所示。下面挑选几种具有代表性的图表风格讲解:
图1-6-25 不同的图表风格
(1)图1-6-25(a)是R ggplot2风格的散点图,使用R ggplot2 Set3的颜色主题,绘图区背景填充颜色为RGB(229, 229, 229)的灰色,以及白色的网格线[主要网格线的颜色为RGB(255, 255, 255),次要网格线的颜色为RGB(242, 242, 242)]。这种图表风格给读者清新脱俗的感觉,推荐使用在PPT演示中;
(2)图1-6-25(d)的绘图区背景填充颜色为RGB(255,255, 255)的白色,无主要和次要网格线,没有过多的背景信息。当图表尺寸较小时,仍然可以清晰地表达数据内容,不像图1-6-24(b)会因为背景线条太多而显得凌乱,其常应用在学术期刊的论文中展示数据。
(3)图1-6-25(e)在图1-6-25(d)的基础上,将绘图区边框设定为“无”,也没有主要和次要网格线,同样常应用在学术期刊的论文中展示数据。
所以,总地来说,图1-6-25(a)和图1-6-25(b)的风格适合PPT演示,图1-6-25(d)和图1-6-25(e)适合于学术论文展示。其实,不管是使用R、Python,还是Origin、Excel,都可以通过调整绘图区背景、主要和次要网格线、坐标轴线条等的格式,实现如图1-6-25所示的6种不同的图表风格。