小提琴图 (Violin Plot) 用于显示数据分布及其概率密度的组合图,结合了箱形图和密度图的特征,主要用来显示数据的分布形状。

对于小提琴的绘制在R中用ggplot2比较常见,也非常简单,下面简单演示如何用R绘制小提琴图,首先我们定义一个演示数据结构:


library(ggplot2)
library(ggthemes)

# 演示数据,定义四个时间点
Time <-
    rep(c("Time1", "Time2", "Time3", "Time4"), each = 100)
# 每个时间点定义2个分组
Type <-
    c(
        rep("N", 50),
        rep("T", 50),
        rep("N", 50),
        rep("T", 50),
        rep("N", 50),
        rep("T", 50),
        rep("N", 50),
        rep("T", 50)
    )

# 随机赋值
value <- c(rnorm(400)) 

# 生成数据框
Data <-
    data.frame(Time = Time,
               Type = Type,
               value = value)

下面用ggplot2绘制2组、4个时间点小提琴图:


ggplot(Data, aes(x = Time, y = value, fill = Type)) +
    geom_violin(trim = FALSE, color = "white") + # 绘制小提琴图
    geom_boxplot(width = 0.2, position = position_dodge(0.9)) + #绘制箱线图
    theme_few() +
    ylab("Value") + xlab("") #设置x轴和y轴的标题

也可以绘制四个时间点的小提琴图(此处fill改成用Time填充):


ggplot(Data, aes(x = Time, y = value, fill = Time)) +
    geom_violin(trim = F, color = "white") + # 绘制小提琴图
    geom_boxplot(width = 0.2, position = position_dodge(0.9)) + #绘制箱线图
    theme_few() +
    ylab("Value") + xlab("") #设置x轴和y轴的标题

总体来说用ggplot2绘制很方便,建议大家亲自动手尝试,也可以参考下面博文,介绍也很详细。

参考资料:

1.https://blog.csdn.net/zhouhucheng00/article/details/86082760