相信每一個從事生物信息、生命科學或者生態學研究的科研工作者們都被這幾年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)簡單概括為下面這張圖:
核心就是grDevice,R語言的圖形引擎,所有的圖形系統和后來的作圖包都是基于這樣的圖形系統。關于不同的操作系統中的圖形設備(圖形系統的組成部分),和基于這些圖形設備的文件設備,比如pdf,postscript等,可以參照Paul Murrel的R graphics(2005),簡單概括為以下的表格:
為什么要了解相關的圖形設備和文件設備呢?因為調用R的文件設備比如pdf畫圖時,對這些圖形設備的特點有所了解,他們能夠使用的字體等等,對接下來的R作圖相當關鍵。