前一节我们介绍了如何用ggplot函数绘制简单的散点图,并对数据框进行了简单介绍。这一节我们来学习如何修改图形的属性(颜色,大小,形状等)以及如何进行分面操作,以便更好的观察数据子集细微的特征。
关于颜色的设置,我们可以考虑这样一个问题,怎么样在图上将不同类型的汽车明确的区分开,以便更好的分析不同类型汽车之间的差异呢?如果我们可以做到改变图中点的颜色,这个问题就迎刃而解了。基于这个考虑,我们添加一个颜色参数colour=class,结果可以一目了然的区分开不同类型的汽车,它们的发动机引擎大小和燃油效率的关系也能够大致的做一个对比。
同样的,我们可以改变点的形状来做到区分数据点的类别,添加参数,shape=class。需要注意的是,suv这里显示为空,并且给出了警告信息,说shape参数最多可以为6类,我们的类型是7类,超了,所以suv的数据都丢失了,不在图中显示。
需要注意的是,当我们顺理成章的将图中点的大小用class来表示是,会出现一个什么样的情况呢?我们添加参数size=class,结果图中很多点都出现了覆盖,这个效果不是我们想要的,同时给出了警告信息,离散型的变量赋值给size参数不是一个好主意。
关于分面,一定不要把它打成“分娩”,意思差别太大。分面,这个词听起来一点都不可爱,很抽象,很晦涩,很讨厌。为了形象的理解它,我们考虑这样一个问题,我们之前绘制的图形,都是利用所有数据绘制出的引擎大小和燃油效率的关系,如果我们需要绘制不同类型的汽车的引擎大小和燃油效率的关系,并且在一张图上加以显示,这样的操作就叫做分面。我们需要在原有绘图代码中添加一个facet_wrap(~class,nrow=2)函数,这里需要注意的是,传递给facet_wrap函数的变量需是离散型的分类变量。这里的nrow是对输出行数的设置。
以上只是对列做分面,如果需要对行和列,需要用函数facet_grid(drv~cyl),如果要省略一个参数,可以用"."代替,即acet_grid(.~cyl)或者acet_grid(drv~.)。
具体的操作及效果可以看视频。
看完以后,可以思考以下几个问题:
一是如何将所有的点都变成蓝色?
二是什么样的参数需要赋值连续型变量(离散型变量)?
三是stroke这个参数的作用是什么?
领取专属 10元无门槛券
私享最新 技术干货