ggplot2是R语言最为强大的作图软件包,强于其自成一派的数据可视化理念。当熟悉了ggplot2的基本套路后,数据可视化工作将变得非常轻松而有条理。
本文主要对ggplot2的可视化理念及开发套路做一个总体介绍,具体绘图方法(如折线图,柱状图,箱线图等)将在后面的文章中分别进行讲解。
核心理念
1. 将数据,数据相关绘图,数据无关绘图分离
这点可以说是ggplot2最为吸引人的一点。众所周知,数据可视化就是将我们从数据中探索的信息与图形要素对应起来的过程。
ggplot2将数据,数据到图形要素的映射,以及和数据无关的图形要素绘制分离,有点类似java的MVC框架思想。这让ggplot2的使用者能清楚分明的感受到一张数据分析图真正的组成部分,有针对性的进行开发,调整。
2. 图层式的开发逻辑
在ggplot2中,图形的绘制是一个个图层添加上去的。举个例子来说,我们首先决定探索一下身高与体重之间的关系;然后画了一个简单的散点图;然后决定最好区分性别,图中点的色彩对应于不同的性别;然后决定最好区分地区,拆成东中西三幅小图;最后决定加入回归直线,直观地看出趋势。这是一个层层推进的结构过程,在每一个推进中,都有额外的信息被加入进来。在使用ggplot2的过程中,上述的每一步都是一个图层,并能够叠加到上一步并可视化展示出来。
3. 各种图形要素的自由组合
由于ggplot2的图层式开发逻辑,我们可以自由组合各种图形要素,充分自由发挥想象力。
基本开发步骤
1. 初始化 – ggplot()
这一步需要设定的是图的x轴,y轴和”美学特征”。基本形式如下:
1
p <- ggplot(data = , aes(x = , y = ))
这一步里,设置x轴和设置y轴很好理解。那么”美学特征”又是什么呢?
举个例子来说,下面这张散点图里,x轴表示年龄,y轴表示身高,很好理解:
但这张图除了展示年龄和身高的关系,还展示出每个样本点的体重:颜色越深表示体重越大。因此体重信息和年龄身高一样,也需要绑定到一个具体的列。这一列就是散点图中的”美学特征”。
来看看R语言绘制代码:
1
ggplot(heightweight, aes(x=ageYear, y=heightIn, colour=weightLb))+geom_point()
其中的colour参数就是该图的”美学特征”。
再比如,下面这张柱状图中,x轴表示日期,y轴表示权重,很好理解:
但这张图中每个日期对应了两个不同的权重并采用两个柱状来对比,那么这个划分依据也是另一个“美学特征”。
再看看绘制代码:
1
ggplot(cabbage_exp, aes(x=Date, y=Weight, fill=Cultivar))+geom_bar(position="dodge", stat="identity")
其中的fill参数就是该图的”美学特征”。
综上所述,图中的每个样本点除了通过它的坐标位置,还可以以其他形式展示信息,比如大小,色深,分组等。而这些新形式需要绑定的列,便叫做”美学特征”。
“美学特征”的形式和x,y轴一样是以列的形式给出,且列中元素个数和x,y轴列必然相等。它的设置也和x,y轴一样在ggplot()函数的aes参数括号内进行。
2. 绘制图层 – geom_bar()/geom_line()等等
上一步的主要工作是为数据可视化配置好了数据,接下来便可根据业务的需要来绘制不同的图,如折线图/柱状图/散点图等等。具体的实现方法在后面的章节中会细致讲解,这里重点提一下绘图函数里的stat参数。这个参数是对冲突样本点做统计,该参数默认为identity,表示保留样本点原(y)值,还可以是sum,表示对出现在这点的(y)值进行求和等等。
3. 调整数据相关图形元素 – scale系列函数、某些专有函数
在ggplot2中,scale标尺机制专门负责完成数据到图像元素的映射。也许你会问,”美学特征”不是已经定义好了这个映射吗?然而事实是”美学特征”只是选定了映射前的数据,并没有说明具体映射到什么图形元素。
举个例子,假如某张表记录了不同种类水池的长,宽,深信息。现在需要绘制不同种类下水池长和宽关系的柱状图,那么初始化完成的是这个映射:
而scale函数完成的是这个映射:
显然a映射为了红色,b映射为了蓝色。
也许你还会问,我的代码不用scale,那么映射是如何完成的呢?答曰系统有默认映射的,就像绘图函数都有默认参数stat=identity这样。
4. 调整数据无关图形元素 – theme()、某些专有函数
这部分包括设置图片标题格式,文字字体这类和数据本身无关的图像元素。只需调用theme()函数或者某些专有函数(如annovate函数可为图片添加注释)便可实现。
一个图层绘制好后便可观察调整,然后开始下一个图层的制作,直到整幅图绘制完毕。
小结
本文作为该系列的开篇,从总体、抽象的角度介绍了R语言的数据可视化包ggplot2。读者如果觉得有些概念抽象难以理解,不必纠结,待看完该系列其他文章后再回过头来看本文,相信会有新的收获。
接下来的文章将从具体、细致的角度讲解如何使用R语言的ggplot2软件包进行各种数据可视化。
最后,欣赏一些使用ggplot2制作的成品图吧:
[译]R语言突破大数据瓶颈:Shiny的Spark之旅
基于R语言的梯度推进算法介绍
用R语言抓取pm2.5数据绘制全国pm2.5分布图
数据分析咨询请扫描二维码
在当今数字化时代,数据已成为推动经济和技术发展的关键因素。企业和机构对数据科学与大数据专业人才的需求急剧增长。该领域涵盖 ...
2024-11-16金融数学是一门充满挑战和机遇的专业,它将数学、统计学和金融学的知识有机结合,旨在培养能够运用数学和统计方法解决复杂金融市 ...
2024-11-16在信息时代的浪潮中,大数据已成为推动创新的重要力量。无论是在商业、医疗、金融,还是在日常生活中,大数据扮演的角色都愈发举 ...
2024-11-16在快速演变的数字时代,数据分析已成为多个行业的核心驱动力。无论你是刚刚踏入数据分析领域,还是寻求进一步发展的专业人士,理 ...
2024-11-15Python作为一种通用编程语言,以其简单易学、功能强大等特点,成为众多领域的核心技术驱动者。无论是初学者还是有经验的编程人员 ...
2024-11-15在当今数据驱动的世界中,数据分析已成为许多行业的基础。无论是商业决策,产品开发,还是市场策略优化,数据分析都扮演着至关重 ...
2024-11-15数据分析作为现代商业和研究领域不可或缺的一部分,吸引了越来越多的初学者。然而,自学数据分析的过程中,初学者常常会遇到许多 ...
2024-11-15在当今的数据驱动世界中,机器学习方法在数据挖掘与分析中扮演着核心角色。这些方法通过从数据中学习模式和规律来构建模型,实现 ...
2024-11-15随着数据在各个行业的重要性日益增加,数据分析师在商业和技术领域的角色变得至关重要。其核心职责之一便是通过数据可视化,将复 ...
2024-11-15数据分析师的职责不仅仅局限于解析数据和得出结论,更在于将这些复杂的信息转换为清晰、易懂且具有影响力的沟通。良好的沟通能力 ...
2024-11-15数字化转型是企业提升竞争力和实现可持续发展的关键路径。面对快速变化的市场环境,以及技术的飞速发展,企业在数字化转型过程中 ...
2024-11-15CDA数据分析师认证:CDA认证分为三个等级:Level Ⅰ、Level Ⅱ和Level Ⅲ,每个等级的报考条件如下: Le ...
2024-11-14自学数据分析可能是一条充满挑战却又令人兴奋的道路。随着数据在现代社会中的重要性日益增长,掌握数据分析技能不仅能提升你的就 ...
2024-11-14数据分析相关职业选择 数据分析领域正在蓬勃发展,为各种专业背景的人才提供了丰富的职业机会。从初学者到有经验的专家,每个人 ...
2024-11-14数据挖掘与分析在金融行业的使用 在当今快速发展的金融行业中,数据挖掘与分析的应用愈发重要,成为驱动行业变革和提升竞争力的 ...
2024-11-14学习数据挖掘需要掌握哪些技能 数据挖掘是一个不断发展的领域,它结合了统计学、计算机科学和领域专业知识,旨在从数据中提取有 ...
2024-11-14统计学作为一门基于数据的学科,其广泛的应用领域和多样的职业选择,使得毕业生拥有丰厚的就业前景。无论是在政府还是企业,统计 ...
2024-11-14在当今高速发展的技术环境下,企业正在面临前所未有的机遇和挑战。数字化转型已成为企业保持竞争力和应对市场变化的必由之路。要 ...
2024-11-13爬虫技术在数据分析中扮演着至关重要的角色,其主要作用体现在以下几个方面: 数据收集:爬虫能够自动化地从互联网上抓取大量数 ...
2024-11-13在数据分析中,数据可视化是一种将复杂数据转化为图表、图形或其他可视形式的技术,旨在通过直观的方式帮助人们理解数据的含义与 ...
2024-11-13