R数据科学——ggplot数据可视化(1)——第一大难点mapping属性映射问题
转载请注明出处:https://blog.****.net/xiezhiliang22
1 前言
本系列主要讲解ggplot2的几大难点,会在后续不断更新,对应书籍《R数据科学》之中的第一章ggplot可视化,自己先将第一章读完,习题一题一题认真做,发完现看不懂了再来看这篇文章中所讲的几大难点或许就会茅塞顿开。只有将这几大难点真正搞懂,ggplot2才真正搞明白。下面进入正题。
资源链接:《R数据科学》习题答案:
https://jrnold.github.io/r4ds-exercise-solutions/data-visualisation.html
外文网站,建议习题不要使用翻译,会把本来的意思翻译错。直接看外文,说不定还可以提升一下英语水平
2 样本数据集——深入理解
样本选取R自带的mpg样本集
敲黑板!!!重要事情说三遍。弄清楚样本,弄清楚样本,弄清楚样本。不听小生言,吃亏在眼前。
首先搞懂样本数据集各个参数的含义,《R数据科学》中选择的样本数据集是关于汽车的。样本集的大小是234*11,具体来说有234行样本数据,每一行样本数据都有11个不同的属性值,分别为manufacturer,model,displ,year,cyl,trans,drv,cty,hwy,fl,class,仔细搞明白这11个属性是什么意思。
3 第一大难点——图性属性映射
映射?看到这个名词相信大多数理工男的脑海里是浮现下面的图,没错,就是高中的数学概念——映射。下面让我们重温经典,下图是一对一映射,x映射到f(x)
那么,我们再来仔细推敲一下,我们作图的目的是什么,不就是将庞大的数据集本身各个属性映射到一个简略的图上面吗?
好了,明白了这一点,那么想一下这个数据集之中一共11个属性,上面右图横纵坐标表示displ和hwy,仔细想一想左侧的数据集一共有11个属性(11列)是不是只映射了2个属性,仅仅将数据集的displ和hwy映射成为右图的横纵坐标(下图有一个映射的过程)。
那么在ggplot2的框架里面如何表示映射代码呢?
答案————统一写在mapping=aes()的aes里面,aes里面放的是映射,等号左边是生成图像属性,右侧是样本集中的属性!!!,下图有一个举例的代码,就是我们在上面说的将样本集中的displ列映射到生成图片的x轴,hwy映射到y轴
那么,共有11个属性,现在才通过映射反应了2个属性,我们怎么表示更多的特征呢?
答案————再进行映射,比如我要将样本集中class这一列的属性在生成图上面反应,那么就可将class这个列映射到color上面。
是不是通过添加这个映射又反应了11个属性之中一个?好了,搞懂了这一点,下面进入让人迷糊的难点,仔细观察下面的代码和生成结果。
什么鬼?为什么不是蓝色?
看一看代码图片上面箭头,样本集中有blue这一个属性(列)吗?没有的话,硬要是映射是不是就相当于在样本集里又添加了一列属性,名字叫做"blue",那么我们换成“red”呢?看下面结果
???为何还是这个样子。推敲一下,我们此时不就相当于234个样本都新起了一名字叫“red”吗,也是将原来样本假想变为了12列,多了一个属性,和“blue”有区别吗?不懂,再看
这2个有什么区别?前一个234个样本相当于都增加一列名字叫1,后一个 234个样本也增加一列,只不过第一个样本叫1,第二个样本叫2,第234个样本叫234,所以是不是映射的结果也不同。
下面进行一个检测看是否真的搞懂了。
为何出来是这个样子,同样道理,等号右边有displ<5这个样本集吗,没有对不对。那么displ<5这是一个逻辑命令对吗?类似于c语言,只有False和TRUE 2个属性那么映射到生成图像是不是也就反应了2种颜色。
好了,到这里应该都搞明白《R数据科学》第一章的映射问题了,最后再强调一遍,所有映射写在aes()里面,写在括号外面就是手动改变了,这个书中应该有详解,在这里就不多解释了。
写在最后,一定要跟着书练习,习题一题题做,习题答案链接发在问章开头了,之后会把书中源代码传上去,读者也可以自己从网上下,就到这里吧。