上海鹿明生物科技有限公司
400-6699-117转1000
热门搜索:
分析测试百科网 > 鹿明生物 > 新闻动态 > R语言—小提琴图的如何绘制,鹿明生物来解密
认证会员

诚信认证:

工商注册信息已核实!
扫一扫即可访问手机版展台

R语言—小提琴图的如何绘制,鹿明生物来解密

发布时间: 2020-04-07 00:49 来源:上海鹿明生物科技有限公司

作为一名科研工作者,本期小鹿为大家分享科研中的“小浪漫”—在我们的科研文章中经常可以看见的小提琴图。用R语言快速绘制小提琴图的方法,赶紧查收这份属于科研人的“小浪漫”吧!

 

小提琴图(vioplot)
 

小提琴图(vioplot),顾名思义小提琴图的形状像一把小提琴。但其实,小提琴图是由箱线图(boxplot)和密度图(density plot)组成的。所以它表达的信息比箱线图更多一些。
 

图 |小提琴图在《cell》文章中的应用

 

本次我们选用R包:vioplot绘制小提琴图,vioplot是一个强大的工具,以帮助研究人员可视化数据,特别是在质量检查和探索部分的分析。小提琴图有很多好处:

 

1.与boxplot图绘制相比,vioplot的绘制有更大的灵活性;

2.与boxplot相比,小提琴图增加了密度图这一维度信息;

3.与现有的图形相比,小提琴图更容易直接比较数据类型;
 

R语言—小提琴绘制法
 

用R语言实现小提琴绘制方法如下(有代码说明和结果展示),建议使用Rstudio:
 

01:设置当前工作目录

setwd("./vioplot/")


02:安装和导入R包:vioplot

install.packages(vioplot)

library(vioplot)

# 载入需要的程辑包:sm

# Package 'sm', version 2.2-5.6: type help(sm) for summary information

# 载入需要的程辑包:zoo

#

# 载入程辑包:‘zoo’

#

# The following objects are masked from ‘package:base’:

#  

#   as.Date, as.Date.numeric

 

03:R包:vioplot简介

 

R包描述

# Package: vioplot

# Title: Violin Plot

# Version: 0.3.4

# Date: 2019-11-30

# Authors@R: c(person("Daniel", "Adler", email = "dadler@uni-goettingen.de", role = c("aut", "cph")),

#              person("S. Thomas", "Kelly", email = "tom.kelly@riken.jp", role = c("aut", "cre")),

#              person("Tom M.", "Elliott", email = "tom.elliott@auckland.ac.nz", role = c("ctb")))

# Description: A violin plot is a combination of a box plot and a kernel density plot. This package allows extensive customisation of violin plots.

 

主要函数

ls(package:vioplot) # vioplot包中只有一个函数,说明这个函数中的参数可能有很多

 

# [1] "vioplot"

# Warning message:

  # In ls(package:vioplot) : ‘package:vioplot’被转换成字符串

 

04:Customising Violin Plots小提琴图的定制

vioplot包是专门用来绘制小提琴图的R包,我们接下来看一下它的功能和各参数的用法

 

#@ 测试数据:鸢尾花数据iris

data("iris") # 载入R内置数据

class(iris) # 查看iris的数据集类型

# [1] "data.frame"

dim(iris) # 获取iris的数据维度信息

# [1] 150   5

head(iris) # 获取iris的前6行

# Sepal.Length Sepal.Width Petal.Length Petal.Width Species

# 1          5.1         3.5          1.4         0.2  setosa

# 2          4.9         3.0          1.4         0.2  setosa

# 3          4.7         3.2          1.3         0.2  setosa

# 4          4.6         3.1          1.5         0.2  setosa

# 5          5.0         3.6          1.4         0.2  setosa

# 6          5.4         3.9          1.7         0.4  setosa

 

str(iris) # 查看iris的数据集结构

# 'data.frame':     150 obs. of  5 variables:

#   $ Sepal.Length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...

# $ Sepal.Width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...

# $ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...

# $ Petal.Width : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...

# $ Species     : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...

 

 

默认参数绘制小提琴图
 

vioplot(iris$Sepal.Length[iris$Species=="setosa"], iris$Sepal.Length[iris$Species=="versicolor"], iris$Sepal.Length[iris$Species=="virginica"], names=c("setosa", "versicolor", "virginica"))
 

 

 定制个性化的小提琴图

通过参数指定填充颜色、边框颜色、中点的颜色和形状,最后用legend函数为小提琴图填加图例。

 

vioplot()参数说明:

(1)main 为小提琴图填加主题,例如:main = “Sepal Length”

(2)col 指定小提琴的填充颜色,可以是任意R支持的颜色,而且可以根据小提琴分组决定同种或不同种的填充颜色,例如:col = “lightblue”,或col = c("lightgreen", "lightblue", "palevioletred")

(3)border 设置小提琴边框的颜色,例如:border="royalblue"

(4)lineCol设置小提琴图的boxplot轮廓(包括盒须)颜色,举例:lineCol = violetred紫罗蓝色

(5)rectCol 设置小提琴图的将boxplot填充颜色, 举例:rectCol = lightblue亮蓝色

(6)colMed 设置中点的颜色,例如:colMed = “red”,中点设置为红色

(7)pchMed 设置中点的形状,例如:pchMed = c(15, 17, 19),三个小提琴中点的形状分别为正方形、三角形和圆形

 

legend()是R语言基础函数,使用方法比较简单易理解,很多参数是在R基础函数中通用的,用法举例如下:

legend("topleft", legend=c("setosa", "versicolor", "virginica"), fill=c("lightgreen", "lightblue", "palevioletred"), cex = 1) # 图例的位置、内容和字体大小都是可以灵活定制的

 

优化参数定制美观的小提琴图

最后再加上图例和对每个小提琴进行不同颜色区别的参数,就可以绘制出美观的小提琴图了。

vioplot(iris$Sepal.Length[iris$Species=="setosa"], iris$Sepal.Length[iris$Species=="versicolor"], iris$Sepal.Length[iris$Species=="virginica"], names=c("setosa", "versicolor", "virginica"), main="Sepal Length (Equal Area)", areaEqual = T, col=c("lightgreen", "lightblue", "palevioletred"), border=c("darkolivegreen4", "royalblue4", "violetred4"), rectCol=c("forestgreen", "blue", "palevioletred3"), lineCol=c("darkolivegreen", "royalblue", "violetred4"), colMed=c("green", "cyan", "magenta"), pchMed=c(15, 17, 19)) # 绘制小提琴图

legend("topleft", legend=c("setosa", "versicolor", "virginica"), fill=c("lightgreen", "lightblue", "palevioletred"), cex = 1) # 添加图例。
 

05:R语言—小提琴图的浪漫邂逅


 

用vioplot包绘制小提琴图非常方便,而且函数vioplot的使用并不复杂,整体使用思路和方法与R基础绘图函数一致,有很好的通用性,适合科研工作者自己上手绘制自己的小提琴图。当然,R中还有ggplot2包可以绘制小提琴图,感兴趣的朋友可以自己探究一下。



附录:版本信息

sessionInfo() # R和R包的版本信息

 

# R version 3.6.2 (2019-12-12)

# Platform: x86_64-w64-mingw32/x64 (64-bit)

# Running under: Windows 10 x64 (build 18363)

#

# Matrix products: default

#

# locale:

#[1]LC_COLLATE=Chinese (Simplified)_China.936

#[2]LC_CTYPE=Chinese (Simplified)_China.936  

# [3] LC_MONETARY=Chinese (Simplified)_China.936

# [4] LC_NUMERIC=C                             

# [5] LC_TIME=Chinese (Simplified)_China.936   

#

# attached base packages:

# [1] stats     graphics  grDevices utils     datasets  methods 

# [7] base    

#

# other attached packages:

# [1] vioplot_0.3.4 zoo_1.8-7     sm_2.2-5.6  

#

# loaded via a namespace (and not attached):

# [1] compiler_3.6.2  tools_3.6.2     grid_3.6.2    

# [4] packrat_0.5.0   lattice_0.20-38 tcltk_3.6.2

 

 

END


移动版: 资讯 直播 仪器谱

Copyright ©2007-2024 ANTPEDIA, All Rights Reserved

京ICP备07018254号 京公网安备1101085018 电信与信息服务业务经营许可证:京ICP证110310号