R语言ggplot2画图生成pdf文件中英文字体完美解决方案(一)

相信每一个从事生物信息、生命科学或者生态学研究的科研工作者们都被这几年R语言的飞速发展所震惊了。强大的统计函数包,分析统计后期的数据处理和可视化都非常完美,大数据时代更是派上了用场,一些政府机构和公司在出年终报告的时候也都开始逐渐用上了数据可视化的利器ggplot2. 

笔者在今年环保部水环境管理司司长的一场关于南四湖治理和全国水环境管理的报告上感觉到将ggplot2用于政府相关部门的工作报告上非常有用,无论是ggmap和ggplot2的结合,还是就ggplot2本身而言,分组画图的优势非常明显。但是一直让人困扰的问题是,R语言对中文的支持非常不好,在画出美妙的柱状图或者箱线图中的过程不能出现任何中文,每一列数据的列名必须是英文,相关的数据标识也必须是英文,但我们知道,正规的政府工作报告中图标的标题或者x轴y轴的名字等都必须要是中文,在硕士博士论文中的图也需要中文,有时需要中文和英文混合使用,使用的字体也有明确的要求,如果想要用R作图就必须要解决这个问题。

其实这个问题由来已久,笔者所在的科研领域,每一个杂志对作图的英文字体要求都有所不同,比如有的要求Times New Roman,有的要求更加好看的Arial和Helvetica,也有很少一部分要求Courier。使用一些画图软件比如sigmaplot,OriginLab或者Mac的prism等可以直接修改字体,也算是一种很好的解决方案,但相比于R环境,颜色的搭配,分组标识画图,多样化的图标类型等,都有所欠缺。

为了能够在R中使用不同的中英文字体画出图来,我们需要对R语言的图形设备系统有一个很好的了解。其实这设计到R语言的前生----S语言,其图形系统也在不断被更新,关于R的图形引擎和图形系统之间的关系可以参照一个微信公众号(zhongheng)简单概括为下面这张图:

R语言ggplot2画图生成pdf文件中英文字体完美解决方案(一)_第1张图片

核心就是grDevice,R语言的图形引擎,所有的图形系统和后来的作图包都是基于这样的图形系统。关于不同的操作系统中的图形设备(图形系统的组成部分),和基于这些图形设备的文件设备,比如pdf,postscript等,可以参照Paul Murrel的R graphics(2005),简单概括为以下的表格:

R语言ggplot2画图生成pdf文件中英文字体完美解决方案(一)_第2张图片

为什么要了解相关的图形设备和文件设备呢?因为调用R的文件设备比如pdf画图时,对这些图形设备的特点有所了解,他们能够使用的字体等等,对接下来的R作图相当关键。

你可能感兴趣的:(R语言ggplot2画图生成pdf文件中英文字体完美解决方案(一))