{vipor}: 1+1>2的小提琴散点图!

学术   2024-06-13 12:10   浙江  
今天介绍一个R包{vipor} [1],使用简单代码就能画出小提琴散点图(Violin Scatter Plot),结合了小提琴图和散点图,还能解决点与点重叠的问题。

开始准备工作!

安装并载入需要的R包:

install.packages("vipor")
library(vipor)
创建四个不同的数据集:

set.seed(1) # 设置随机种子,确保结果可重复
mydata_norm <- data.frame(
  x = rep("Mean = 0, sd = 1", 200),
  y = rnorm(200, mean = 0, sd = 1) # 正态分布数据
)

set.seed(2) # 设置随机种子,确保结果可重复
mydata_bi <- data.frame(
  x = rep("Bimodal", 90),
  y = c(rnorm(30, mean = -3), rnorm(60, mean = 3))
)

set.seed(3) # 设置随机种子,确保结果可重复
mydata_gamma <- data.frame(
  x = rep("The Gamma Distribution", 50),
  y = rgamma(50, 1) # 生成50个伽马分布随机数
)

set.seed(4) # 设置随机种子,确保结果可重复
mydata_cauchy <- data.frame(
  x = rep("the Cauchy Distribution", 100),
  y = rcauchy(100) # 生成100个柯西分布的随机数
)

summary(mydata_norm)
summary(mydata_bi)
summary(mydata_gamma)
summary(mydata_cauchy)




四个数据创建好了,马上画个小提琴散点图看看!

首先,使用正态分布的数据mydata_norm:

par(mfrow = c(1, 2))

vpPlot(mydata_norm$x, mydata_norm$y)
vpPlot(mydata_norm$x, mydata_norm$y,
       pch = 23,      
# 不同图形
       bg = "gold",   # 图形内填充颜色,只适用 pch = 21:25
       col = "black",
# 图形的外圈线条颜色
       lwd = 1.5,     
# 图形的线条粗细
       cex = 1.8)     
# 图形的大小

上面结果中,左图是一个最基本的小提琴散点图,右图是修饰过的图。

其中的代码pch可以更换点的形状,在R中运行 ?pch 就能在帮助文件中找到一些有用的信息,比如数字与图形的对照图:


接下来,将其他三个数据都画小提琴散点图展示一下:

par(mfrow = c(1, 3))

vpPlot(mydata_bi$x, mydata_bi$y)
vpPlot(mydata_gamma$x, mydata_gamma$y)
vpPlot(mydata_cauchy$x, mydata_cauchy$y)

不同分布的数据轻松展示,也不用担心点的重叠问题。

假如想使用真实数据来画小提琴散点图,当然可以!

下面有请iris数据集:

summary(iris)

iris中前四个变量为连续变量,最后一个为分类变量。

将前四个连续变量一一画出,并按照Species分组展示:

par(mfrow=c(1,1))

vpPlot(iris$Species, iris$Sepal.Length,
       ylab = "Sepal_Length")

vpPlot(iris$Species, iris$Sepal.Width,
       ylab = "Sepal_Width",
       pch = 10,
       las = 2)

vpPlot(iris$Species, iris$Petal.Length,
       ylab = "Petal_Length",
       pch = 16,
       cex = 0.6)

vpPlot(iris$Species, iris$Petal.Width,
       ylab = "Petal_Width",
       pch = 6)




好啦,今天的内容就到这里。如果有帮助,记得分享给需要的人


参考文献

[1]. https://github.com/sherrillmix/vipor

公众号的线上课程
1. 《R语言和统计新手课程》
2. 《回归:从入门到进阶》
3. 《线性混合模型和纵向数据分析》
【通过公众号菜单栏--线上课程】

统计咨询
《服务介绍和经典合作案例》

公众号核心成员的成果发表
《SCI医学1区影响因子9分论文》

公众号核心成员担任SCI杂志Associate Editor!
《JAD杂志Associate editor》
《Frontiers in Neuroscience, Frontiers in Neurology and Frontiers in Psychiatry杂志的神经退行性病变板块》

加入我们
成为我们的课程推广大使,赢取高额回报!
【通过公众号菜单栏--联系我们--招推广员】

▌本文由R语言和统计首发
▌课程相关咨询可添加R师妹微信: kefu_rstats
▌编辑:June
▌邮箱:contact@rstats.cn
▌网站:www.rstats.cn
我们致力于让R语言和统计变得简单!



R语言和统计
我们定期更新与R有关的内容,比如R编程基础,作图,实用R包的解读,统计学基础知识,前沿的统计方法,机器学习等等。
 最新文章