R语言|R语言数据可视化-箱线图

一、概述 【R语言|R语言数据可视化-箱线图】箱线图(bar plot)又叫箱须图(box-whisker plot)在医学科技论文中经常有用到,用于展示数据的大致分布特征,也用于探索异常值和离群点。平行排列的箱线图可以用于比较在某个分类变量各个类别下某指标的分布。R语言使用函数 barplot() 创建箱线图。
二、数据集 下面我将以R语言自带的anorexia数据集为例介绍函数barplot()的用法。该数据集来自于一项关于不同治疗方式下体重变化的临床试验研究。其中的反应变量wt.change记录了每位接受Cont、CBT和FT治疗方式下的治疗效果。

> anorexia Treat Prewt Postwt wt.change 1Cont80.780.2-0.5 2Cont89.480.1-9.3 3Cont91.886.4-5.4 4Cont74.086.312.3 5Cont78.176.1-2.0 6Cont88.378.1-10.2 7Cont87.375.1-12.2 8Cont75.186.711.6 9Cont80.673.5-7.1 10Cont78.484.66.2 11Cont77.677.4-0.2 12Cont88.779.5-9.2 13Cont81.389.68.3 14Cont78.181.43.3 15Cont70.581.811.3 16Cont77.377.30.0 17Cont85.284.2-1.0 18Cont86.075.4-10.6 19Cont84.179.5-4.6 20Cont79.773.0-6.7 21Cont85.588.32.8 22Cont84.484.70.3 23Cont79.681.41.8 24Cont77.581.23.7 25Cont72.388.215.9 26Cont89.078.8-10.2 27CBT80.582.21.7 28CBT84.985.60.7 29CBT81.581.4-0.1 30CBT82.681.9-0.7 31CBT79.976.4-3.5 32CBT88.7103.614.9 33CBT94.998.43.5 34CBT76.393.417.1 35CBT81.073.4-7.6 36CBT80.582.11.6 37CBT85.096.711.7 38CBT89.295.36.1 39CBT81.382.41.1 40CBT76.572.5-4.0 41CBT70.090.920.9 42CBT80.471.3-9.1 43CBT83.385.42.1 44CBT83.081.6-1.4 45CBT87.789.11.4 46CBT84.283.9-0.3 47CBT86.482.7-3.7 48CBT76.575.7-0.8 49CBT80.282.62.4 50CBT87.8100.412.6 51CBT83.385.21.9 52CBT79.783.63.9 53CBT84.584.60.1 54CBT80.896.215.4 55CBT87.486.7-0.7 56FT83.895.211.4 57FT83.394.311.0 58FT86.091.55.5 59FT82.591.99.4 60FT86.7100.313.6 61FT79.676.7-2.9 62FT76.976.8-0.1 63FT94.2101.67.4 64FT73.494.921.5 65FT80.575.2-5.3 66FT81.677.8-3.8 67FT82.195.513.4 68FT77.690.713.1 69FT83.592.59.0 70FT89.993.83.9 71FT86.091.75.7 72FT87.398.010.7 > attach(anorexia) > counts <- table(Treat) > counts Treat CBT ContFT 292617

三、基本语法 在 R 语言中创建条形图的基本语法是
## 分类s3方法 boxplot(formula, data = https://www.it610.com/article/NULL, ..., subset, na.action = NULL, xlab = mklab(y_var = horizontal), ylab = mklab(y_var =!horizontal), add = FALSE, ann = !add, horizontal = FALSE, drop = FALSE, sep =".", lex.order = FALSE)## 默认 S3 方法: boxplot(x, ..., range = 1.5, width = NULL, varwidth = FALSE, notch = FALSE, outline = TRUE, names, plot = TRUE, border = par("fg"), col = "lightgray", log = "", pars = list(boxwex = 0.8, staplewex = 0.5, outwex = 0.5), ann = !add, horizontal = FALSE, add = FALSE, at = NULL)

以下是所使用的参数的描述 -
  • formula 一个公式,例如y ~ grp,其中是要根据分组变量(通常是一个因子)y分成组的数据值的数值向量。grp注意 ~ g1 + g2相当于g1:g2
  • data 数据集
  • subset 一个可选向量,指定要用于绘图的观察子集
  • na.action NA一个函数,它指示当数据包含s时应该发生什么。默认是忽略响应或组中的缺失值
  • xlab 是 x 轴的标签。
  • ylab 是 y 轴的标签。
  • ann logical指示是否应注释轴(通过 xlab和ylab)。
  • drop, sep, lex.order 传递给split.default,看那里。
  • x 用于指定生成箱线图的数据。数值向量或包含此类向量的单个列表。其他未命名的参数将进一步的数据指定为单独的向量(每个对应于一个组件箱线图)。 NAs 在数据中是允许的。
  • … 对于formula方法,命名参数被传递给默认方法。对于默认方法,未命名的参数是附加的数据向量(除非x它们被忽略时是一个列表),而命名的参数是除了参数给定的参数和图形 参数之外要传递给的参数和图形参数(并覆盖 中的那些)。请注意, 可能会或可能不会使用它传递的图形参数:请参阅其文档。 bxpparsparsbxp
  • range 这决定了绘图胡须从盒子伸出多远。如果range为正,则晶须延伸到最极端的数据点,该数据点不超过 range框的四分位间距的倍数。零值会导致晶须延伸到数据极值。
  • width 一个向量,给出了组成图的框的相对宽度。
  • varwidth 如果varwidth是TRUE,则绘制框的宽度与组中观察数的平方根成正比。
  • notch 如果notch是TRUE,则在框的每一侧绘制一个凹口。如果两个图的缺口不重叠,这是两个中位数不同的“有力证据”(Chambers等,1983,第 62 页)。有关boxplot.stats 使用的计算,请参阅。
  • outline 如果outline不正确,则不绘制异常值(作为点,而 S+ 使用线)。
  • names 将在每个箱线图下打印的组标签。可以是字符向量或表达式(请参阅 plotmath)。
  • boxwex 要应用于所有框的比例因子。当只有几个组时,可以通过使框变窄来改善情节的外观。
  • staplewex 装订线宽度扩展,与框宽度成正比。
  • outwex 离群值线宽扩展,与框宽成正比。
  • plot 如果TRUE(默认)然后生成箱线图。如果不是,则返回箱线图所基于的摘要。
  • border 箱线图轮廓的可选颜色向量。border如果 的长度border小于图的数量,则回收中的值。
  • col 如果col为非空,则假定包含用于为箱线图的主体着色的颜色。默认情况下,它们是背景颜色。
  • log 指示是否应以对数比例绘制 x 或 y 或两个坐标的字符。
  • pars (可能很多)更多图形参数的列表,例如,boxwex或outpch;这些被传递给 bxp(如果plot为真);有关详细信息,请参见那里。
  • horizontal 逻辑指示箱线图是否应该是水平的;默认FALSE表示垂直框。
  • add 合乎逻辑,如果为真,则将箱线图添加到当前图。
  • at 给出箱线图绘制位置的数值向量,特别是在add = TRUE; 默认为1:nwheren是框的数量
1. 普通箱线图
boxplot(wt.change~Treat,data=https://www.it610.com/article/anorexia,ylab="体重变化(lbs)",xlab="治疗方式",las =1)

R语言|R语言数据可视化-箱线图
文章图片

2. 含凹槽箱线图
> boxplot(wt.change~Treat,notch=TRUE,data=https://www.it610.com/article/anorexia,ylab="体重变化(lbs)",xlab="治疗方式",las =1) Warning message: In (function (z, notch = FALSE, width = NULL, varwidth = FALSE,: some notches went outside hinges ('box'): maybe set notch=FALSE

R语言|R语言数据可视化-箱线图
文章图片

3. 横向箱线图
> boxplot(wt.change~Treat,varwidth=TRUE,data=https://www.it610.com/article/anorexia,xlab="体重变化(lbs)",ylab="治疗方式",las =1,col = c("red","yellow","green"),horizontal=T) >

R语言|R语言数据可视化-箱线图
文章图片

    推荐阅读