说明
R语言的版本为4.0.2,IDE为Rstudio,版本为1.3.959。学习的主要内容是R官方文档当中给出的算法,对其中的英文注释做了自己理解基础上的翻译。
函数名及参数
# 散点图函数,函数参数很多,而且都有相应作用
# mapping:映射,将数据中的各个属性映射到坐标轴或者其它几何要素上
# 指定之后的映射会与默认映射混合显示在顶部图层,如果没有默认映射,则必须指定
# data:数据,定义本图层中使用的数据集,如为缺省值,则使用默认数据集
# 数据集的类型必须为数据框,否则会被强制转换为数据集
# stat:字符串形式的统计参数,确定用于该图层数据的统计学方法
# position:字符串形式的位置参数,确定位置(也可以是返回位置参数的函数)
# ... :其他传递给图层的参数,例如shape = 21 , colour = "black" , fill = "white" ,
# size = 5 , stroke = 5 ,分别指定了点的形状、线条颜色、填充颜色、
# 填充大小、线条粗细
# na. rm:逻辑参数,真值关闭缺值报错
# show. legend:逻辑参数,是否显示该图层的图例,NA 为默认
# inherit. aes:逻辑参数,是否叠加本图层和默认的几何要素,假值为覆盖而非叠加
library ( ggplot2)
geom_point (
mapping = NULL ,
data = NULL ,
stat = "identity" ,
position = "identity" ,
... ,
na. rm = FALSE ,
show. legend = NA ,
inherit. aes = TRUE )
1、利用映射对散点图归类
原始散点图
将cyl映射到颜色
将cyl映射到形状
将qsec映射到大小形成泡泡图
# mtcars:R 语言自带的数据包,wt、mpg为其中的两列数据
p < - ggplot ( mtcars, aes ( wt, mpg) )
p + geom_point ( )
# 将cyl分别映射到颜色和形状两种几何要素上,进行分组
# factor ( ) :创建因子函数,此处将持续变量转变为不变的因子,
# 因为持续变量不能作为颜色参数和形状参数
# 将qsec映射到点的大小上,形成泡泡图
p + geom_point ( aes ( colour = factor ( cyl) ) )
p + geom_point ( aes ( shape = factor ( cyl) ) )
p + geom_point ( aes ( size = qsec) )
2、设置本图层点属性
设置点颜色和点大小
设置各种属性
# 将本图层的几何要素设置成预定值,此处设置点颜色和点大小
ggplot ( mtcars, aes ( wt, mpg) ) + geom_point ( colour = "red" , size = 3 )
# 指定了点的形状、线条颜色、填充颜色、填充大小、线条粗细各属性
ggplot ( mtcars, aes ( wt, mpg) ) +
geom_point ( shape = 21 , colour = "black" , fill = "white" ,
size = 5 , stroke = 5 )
3、用透明度属性处理大数据
# 设置透明度在数据量大的时候非常实用,容易看出数据分布
# 以下对于同样的数据,设置了三种透明度,生成三张图片
# diamonds:R 语言自带的数据包,数据量非常大
# 53 , 940 行10 列,carat, price为其中两列数据
# 不是程序错误,而是数据量太大,电脑需要时间处理,耐心等待
d < - ggplot ( diamonds, aes ( carat, price) )
d + geom_point ( alpha = 1 / 10 )
d + geom_point ( alpha = 1 / 20 )
d + geom_point ( alpha = 1 / 100 )
4、多图层散点图叠加
两层叠加
三层叠加
# 可以自定义不同图层点的大小和形式,从而组合成形状有趣的点
# 首先在画布图层定义数据集mtcars,并将mpg, wt, cyl分别映射到
# x轴,y轴,形状上
# 其次在上一层图层上将cyl映射到颜色上,并设置填充大小为4
# 最后在顶部图层设置点颜色和大小
# 由于图层叠加的缘故,会产生很好看的效果
# 第二张图与第一张的逻辑类似,只是多叠加了一层图层
p < - ggplot ( mtcars, aes ( mpg, wt, shape = factor ( cyl) ) )
p + geom_point ( aes ( colour = factor ( cyl) ) , size = 4 ) +
geom_point ( colour = "grey90" , size = 1.5 )
p + geom_point ( colour = "black" , size = 4.5 ) +
geom_point ( colour = "pink" , size = 4 ) +
geom_point ( aes ( shape = factor ( cyl) ) )
5、数据残缺报错
缺少中间点数据:
# 当数据中间缺少某一点的数据时会报错,设置na. rm = TRUE 关闭报错
# transform ( ) :数据框置换函数,修改、添加、删除数据框中的列
# ifelse ( ) :判断函数,参数1 为真,执行参数2 ,否则执行参数3
# runif ( ) :随机数生成函数,生成均匀分布的随机数,可指定个数和生成区间
# runorm ( ) :随机数生成函数,生成正态分布的随机数,可指定个数、均值、标准差
mtcars2 < - transform ( mtcars, mpg = ifelse ( runif ( 32 ) < 0.2 , NA , mpg) )
ggplot ( mtcars2, aes ( wt, mpg) ) + geom_point ( )
ggplot ( mtcars2, aes ( wt, mpg) ) + geom_point ( na. rm = TRUE )