R语言数据可视化之美:专业图表绘制指南(增强版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 你为什么要选择R

“工欲善其事,必先利其器”,学术绘图软件的选择与使用特别重要。不同学科的研究人员使用的软件有所不同,但是基础的绘图思想与理念是相通的(这部分会在后面的章节讲解)。具有工科背景的人员常使用MATLAB,具有计算机背景的人员常使用Python,具有统计学科背景的人员常使用R,具有医学背景的人员常使用GraphPad Prism等。常用的学术图表绘制软件包括Excel、Origin、SigmPlot、GraphPad Prism、MATLAB、Python、R等,如图1-2-1所示。每个绘图软件的图表都有不同的图表风格。

图1-2-1 绘图软件的标签云

笔者列出了常用的7款学术图表绘图软件,如表1-2-1所示。从技能要求的角度主要可以分为两大类:编程与界面操作。

像Excel、Origin、SigmaPlot、GraphPad Prism这4款软件,就不需要编程,只要点击界面按钮就可以绘制图表。尽管这些工具都非常容易使用,但也存在一些缺憾。只需鼠标操作无疑十分便捷,但随之而来的却是丧失一些灵活性。你可以改变颜色、字体和标题,但仅限于软件所提供的那些元素。这些软件只能由你去适应它的操作规则,让你使用现有的图表,而并不能创造新的图表。

像MATLAB、Python和R这3款软件,则需要编程才能实现图表的绘制。这些软件本身包含很多数据可视化的函数(function)或者包(package),供用户绘图时使用。尤其是在不同的数据集需要重复操作的情况,如果使用界面绘图软件,则可能需要从头到尾将绘图流程重新实现一遍,而相比之下,通过代码来处理数据就会更加容易,因为针对不同的数据集只需稍微改动一下代码就可以解决。如果你充分掌握代码与算法,那也可以自己编写函数设计新颖的图表。

1.R

相较于其他的所有软件,R的优势之一在于,它是专为数据分析而设计的,它是主要用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。R语言有一系列的数据可视化包,包括ggplot2ggplot2包的官网:http://docs.ggplot2.org/current及ggplot2拓展包ggplot2 extensions拓展包的官网:http://www.ggplot2-exts.org/index.html、lattice、leaflet、playwith、ggvis、ggmaps。

R还提供了部分地图绘制功能,地区数据分析http://cran.r-project.org/web/views/Spatial.html提供了有关地区分析的综合性R工具包列表。另外,用户可以下载《地理统计制图实用指南》http://spatial-analyst.net/book/download——关于如何使用R及其他工具分析空间数据的可免费下载的电子书。

2.Python

Python是一种面向对象的解释型计算机程序设计语言。Python具有丰富和强大的库。它常被昵称为“胶水语言”,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地连接在一起。程序员们戏称“人生苦短,要学Python”,现在Python越来越流行,尤其应用在机器学习、机器视觉、深度学习、网络爬虫等方面。Python语言也有一系列的数据可视化包,包括Pandas、Plotnine、matplotlib、Seaborn、ggplot、Bokeh、Pygal等。其中Plotnine包是参考R ggplot2图形语法实现的可视化包。虽然Python越来越流行,但是在数据可视化方面与R还是有很大差距的。但是rpy2包可以架起R语言与Python之间的桥梁。rpy2包可以允许用户在Python中调用R中ggplot2等包的函数代码。

3.MATLAB

MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析,以及数值计算的高级技术计算语言和交互式环境。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通信、图像处理、信号检测、金融建模设计与分析等领域。MATLAB软件本身就提供了很多绘图函数,可以满足数据可视化的基本需求MATLAB软件数据可视化库:https://cn.mathworks.com/products/matlab/plot-gallery.html。但是还有另外两款MATLAB绘图包很值得推荐使用:PlotPubPlotPub包的官网:https://github.com/masumhabib/PlotPub和GrammGramm包的官网:https://github.com/piermorel/gramm,其中,Gramm包在MATLAB中可以实现R ggplot2的绘图风格,大大提高了MATLAB绘图的美观程度。

4.SigmaPlot

SigmaPlot是一款最佳的学术绘图软件!使用SigmaPlot画出精密的图形是件极容易的事,目前已有超过十万的使用者,特别适合科学家使用。本软件允许用户自行建立任何所需的图形,可插入多条水平轴或垂直轴,指定误差棒(error bar)的方向,让你的图更光彩耀眼,只要用SigmaPlot将图形制作完成即可动态连接给其他软件展示使用,并可输出成EPS、TIFF、JPEG等图形格式,或放置于网站上以供浏览。非常适合网站动态显示图形,使用场合如长时间记录的气象、温度等。

5.Origin

Origin为OriginLab公司出品的较流行的专业函数绘图软件,是公认的简单易学、操作灵活、功能强大的软件,既可以满足一般用户的制图需要,也可以满足高级用户对数据分析、函数拟合的需求。Origin自1991年问世以来,由于其操作简便、功能开放,很快就成为国际流行的分析软件之一,是公认的快速、灵活、易学的制图软件。Origin 2017版本增加了许多颜色主题方案,可以大大改进图表的美观程度。

6.GraphPad Prism

GraphPad Prism是一款集数据分析和作图为一体的数据处理软件,尤其适合生物医学类,可以直接输入原始数据获得高质量的学术图表。它在统计分析上劣于SPSS等统计软件,但是不需要输入程序语言,只需输入原始数据,其操作容易、绘图美观。可与PPT、Word相连接。

7.Excel

几乎所有人都知道这款软件。Microsoft Excel是微软公司的办公软件Microsoft Office的组件之一,是由Microsoft为Windows和Apple Macintosh操作系统的电脑而编写和运行的一款电子表格软件。Excel是微软办公套装软件中一个重要的组成部分,它可以进行各种数据的处理、统计分析和辅助决策操作,广泛地应用于管理、统计财经、金融等众多领域。Excel能实现大部分二维图表的绘制与基础的数据处理与分析,具体可以参考学习《Excel数据之美:科学图表与商业图表的绘制》。

实例分析为更好地了解这7款绘图软件的风格,现采用相同的数据集,分别绘制了散点图、曲线图、(堆积)柱形图和箱形图4种图表,如图1-2-2~图1-2-8所示。

(1)图1-2-2由R ggplot2绘制,其图表风格最为独特与美观,这种图表在部分论文中也是可以直接使用的。使用R ggplot2 Set3的颜色主题,绘图区背景填充颜色为RGB(229, 229, 229)的灰色,以及白色的网格线[主要网格线的颜色为RGB(255, 255, 255),次要网格线的颜色为RGB(242, 242, 242)]。

图1-2-2 R ggplot2图表实例

(2)图1-2-3由Python Seaborn绘制,其图表风格也很有特色,使用Seaborn包的颜色主题方案,绘图区背景填充颜色为RGB(234,234,242)的淡蓝色,以及RGB(255,255,255)的白色的主要网格线(无次要网格线)。

图1-2-3 Python Seaborn图表实例

(3)图1-2-4是使用MATLAB 2014b通过编程绘制的图表,使用MATLAB默认的颜色主题方案Parula,网格线设定为“无”。MATLAB通过函数(function)直接绘制的图表,可以通过图表编辑器对图表进行优化,但是并不能实现箱形图颜色的填充。如果MATLAB使用Gramm包,则可以绘制更加美观的图表。

图1-2-4 MATLAB图表实例

(4)图1-2-5到图1-2-7分别对应SigmaPlot、Origin和GraphPad Prism绘制的图表,这是最为常见的学术图表。它们的图表风格基本相同:绘图区背景填充颜色为RGB(255,255,255)的白色,这样可以使背景不太复杂,尤其适应于图表尺寸较小时,可以保证数据的清晰展示;这些图表使用绘图软件的默认颜色主题,由于不同软件的颜色主题不同,即便是相同的图表样式,也会导致图表的美观存在较大的审美差异。

图1-2-5 SigmaPlot图表实例

图1-2-6 Origin图表实例

图1-2-7 GraphPad Prism图表实例

(5)图1-2-8是使用Excel绘制的图表,使用Excel默认颜色主题方案“Office 2007-2010”。Excel 2016添加了几种新型图表类型,包括矩形树状图、箱形图等;Excel 2013及以前版本只能通过堆积柱形图间接地实现箱形图。

图1-2-8 Excel图表实例

在这么多种绘图软件中,我们为什么要选择R呢?首先因为R是开源的,可以免费使用。其次,R是一套完整的数据处理、计算和制图软件系统。其功能包括:数据存储和处理系统、数组运算工具、完整连贯的统计分析工具、优秀的统计制图功能。尤其是R的ggplot2包及其拓展包以人性化的图形语法,可以快速帮助用户展示数据,并实现个性化的图表。另外,R还有很多其他绘图包,比如可以绘制三维图表的plot3D包等,可以帮助用户绘制几乎所有常见类型的图表。

绘图软件只是一个工具。归根结底,对数据的分析和图表的设计取决于你自己。如果你打算深入研究数据,而且日后可能(或者希望日后)还会接触大量与数据相关的项目,那么现在花些时间学习编程最终会节省其他项目的时间,并且作品也会给人留下更加深刻的印象。你的编程技巧会在每一次项目中获得提高,你会发现编程越来越容易。

心中有剑,落叶飞花,皆是兵器!