4
既往“缤纷灿烂R语言(R语言高阶课程)”推文
1.R语言作图!R语言作图!R语言作图!说三遍!!| 【缤纷灿烂R语言】| R语言高阶课程
2.基础包中的降龙十八掌:par函数详解(上)| 【缤纷灿烂R语言】| R语言高阶课程
3.par函数详解(下)| 缤纷灿烂R语言 | 医学方R语言高阶课程
hello,大家好,我是Leopard!
金庸的武侠中,全真七子出场次数不多,但是给人印象比较深刻。全真七子个个内力深厚,但是由于是道士出身,代表了当时社会的核心价值观,所以行事谨慎小心,中规中矩。R语言基础绘图包中的全真七子也是如此,内力深厚,但是中规中矩,能满足你的要求,但是实在也玩不出什么花样。
plot()的使用频率非常高,无论是早期的数据探索,还是最后的数据呈现,都能用到它。plot()的参数非常少,这是因为,par()的绝大部分参数在plot()中也是通用的。有一个值得介绍的参数是type,即表示所绘制图形的类型,下面的代码展示了较为常用的6种类型:
type = c('p','b','l','s','o','n')
par(mfrow=c(2,3))
for(i in 1:6){
plot(1:10, type = type[i], main = paste('The plot type is: ', type[i]))
}
如下图(图1-2-1):
图1-2-1
除此之外,plot()函数也可以自定义横轴和纵轴的label,以及根据par()的参数选择是否显示边框,显示哪些边框。这对于基础绘图包的其他高级绘图函数也是通用的。
另外,可以通过设置axes=FALSE使图形不显示坐标轴,从而可以进一步自定义坐标轴。xlim和ylim参数是用来限制坐标轴的取值范围的,有时候,我们会遇到这样的问题,即运行一段画图代码后,R抛出一个错误,大意是图形超过了画布的边缘,换句话说就是画布小了,这个时候一般有三种解决办法,第一种就是重新设置坐标轴的取值范围,使其到一个合理的范围,第二种是放大Rstudio中的作图框框,第三种是最实用,最值得推荐的方法,卖个关子,后面再说。
下面我们介绍今天的主角——盒形图!
boxplot()
盒形图,顾名思义,长得像个盒子,实在是不太好看,但是盒形图能够显示出数据分布的大致特征,即四分位数,也能够显示出异常值、离群点,在进行数据初步探索的时候,也是可以用的,但是真的要用作paper中的图,建议还是用其它方法绘制类似的图形,比如海盗图。
boxplot(formula, data = NULL, ..., subset, na.action = NULL)
boxplot(x, ..., range = 1.5, width = NULL, varwidth = FALSE,
notch = FALSE, outline = TRUE, names, plot = TRUE,
border = par("fg"), col = NULL, log = "",
pars = list(boxwex = 0.8, staplewex = 0.5, outwex = 0.5),
horizontal = FALSE, add = FALSE, at = NULL)
上面是盒形图的一些基本参数,从R给出的帮助文档可以看出,盒形图有两种绘制方式,第一种:公式法(即x~y的形式);第二种:数值法。
先介绍最简单的数值法,所谓数值法,即直接传入一组数据进去绘图,这种情况很简单,无非就是为了观察一下这组数据的分布,比如(图1-2-2-1):
boxplot(rnorm(40)) #绘制一组服从正态分布的数据的盒形图
图1-2-2-1
公式法稍微复杂一点儿,但是用途也更加广泛,因为公式的基本形式是y~x,所以,我们需要传入两个变量,很明显,y是连续型变量,而x是分类变量。下面对一些重要的参数进行解释。
1) range:范围参数,即盒形图的延伸范围,取值为正数。见图1-2-2-2
par(mfrow=c(1,3))
set.seed(100)
data = rnorm(40)
boxplot(data,range= 0.5,xlab= 'range is 0.5')
boxplot(data,range= 1,xlab = 'range is 1')
boxplot(data,range= 1.5,xlab= 'range is 1.5')
图1-2-2-2
2) width: 盒形图的宽度
3) outline:逻辑参数,是否绘制离群点,默认是TRUE,即绘制离群点。
4) notch:逻辑参数,是否使用卡槽。默认是FALSE。
5) names:盒形图的label,注意,不是该盒形图的标题。
6) horizontal:逻辑参数,是否横向放置盒形图。默认是FALSE。
7) add:逻辑参数,是否将盒形图添加到现有的图形上。
8) at:配合add参数使用,定义该盒形图的位置。
见图1-2-2-3
boxplot(len ~ dose, data = ToothGrowth,
boxwex = 0.25, at = 1:3 - 0.2,
#at参数定义了盒形图中盒子的位置,传入一个向量,所以,最终三个盒子的横坐标分别是0.8,1.8,2.8。
subset = supp == "VC", col = "yellow",
names = c('dose=0.5','dose=1.0','dose=2.0'),
main = "Guinea Pigs' Tooth Growth",
xlab = "Vitamin C dose mg",
ylab = "tooth length",
xlim = c(0.5, 3.5), ylim = c(0, 35), yaxs = "i")
图1-2-2-3
boxplot(len ~ dose, data = ToothGrowth, add = TRUE,
#在当前的图形上,添加一个新的盒形图
boxwex = 0.25, at = 1:3 + 0.2,
names = c('dose=0.5','dose=1.0','dose=2.0'),
subset = supp == "OJ", col = "orange")
见图1-2-2-4
图1-2-2-4
我们可以发现,上图中展示了三种不同的VC剂量,即0.5,1.0,2.0,以及展示了两种不同的VC补充剂,分别用黄色和橙色表示。图很完美,但是缺少一个很重要的元素,就是图例(legend)。
基础绘图包中的图例添加有两种方法,第一种直接在高级绘图函数中添加legend参数,第二种使用legend()函数,该函数是低级绘图函数,但是更加灵活,详见后文。
好了,本期的内容就是这些,下期继续盒形图的下半部分。see you~
温馨提示:“缤纷灿烂R语言”为医学方推出的R语言高阶课程,如果是基础较薄弱的童鞋可以出门右转翻阅我们面向零基础朋友的R语言基础教程:一本R书走天涯~
一本R书走天涯往期推文:
4.【一本R书走天涯】第四期:R语言扫地僧 | 医学方R语言专题
5.字符串的对与错 |【一本R书走天涯】第五期 | 医学R语言速成精品专题
6.悄悄告诉你一个关于“因子”的故事 | 【一本R书走天涯】| R语言基础课程
7.R语言的金刚琢 |【一本R书走天涯】第七期| 医学方R语言基础课程
8.“矩阵”革命! |【一本R书走天涯】第八期 | “医学方”R语言基础课程
9.聊聊【数组】 |【一本R书走天涯】第九期 | “医学方”R语言基础课程
10.第十期:数据框前传 | 一本R书走天涯 | “医学方”R语言基础专题
11.第十一期:数据框后传 | 一本R书走天涯 | “医学方”R语言基础专题
医学方已推出“国自然基金申请”“临床数据挖掘”、“基因数据挖掘”、“R语言教程”、“医学统计学”、“微创动物实验培训”等多个专题课程,如需了解课程详细推文,可关注“医学方”公众号,点击“精品专题”进入
想了解“医学方”最新视频课程动态?可登陆腾讯课堂或网易云课堂收看
目前已有课程:
(1)医学方|医学统计学公开课|石小白老师教您轻松学统计(公益免费课程)
(2)医学方|医学数据挖掘精品课程|豪斯医生手把手教您如何数据挖掘
网易云课堂:http://study.163.com/u/ykt1467466791112
客服电话:15821255568
客服微信:yixuefang1234
温馨提示:医学方还设有专门的讨论群哦~各位明星导师都在群中,可以解答各位的遇到的问题,如有兴趣,可以加客服微信后加入群聊~
微信公众号:
如果你觉得文章还不错,就请点击右上角选择发送给朋友或者转发到朋友圈。您的支持和鼓励是我们最大的动力。喜欢就请关注我们吧~
长按二维码
关注我们