【R语言】小提琴图

本文介绍了小提琴图,一种展示定量数据分布的图表,结合了箱线图和核密度图的优点,用于快速理解数据分布、集中趋势和离散程度,以及不同类别间的对比。通过R语言中的ggplot2库进行实例演示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

小提琴图是一种用于显示定量数据分布的图表类型,它结合了箱线图和核密度图的特点。小提琴图可以展示数据的分布形状(类似于核密度图),同时也显示了数据的五数概括(最小值、下四分位数、中位数、上四分位数和最大值,类似于箱线图)。

小提琴图的外形类似于一个小提琴,其中心的粗线表示数据的四分位数和中位数,两侧的线条则是数据的密度估计,反映了数据点在不同数值上的分布情况。小提琴图的宽度可以根据数据点在不同位置的密度自动调整,展示出数据的分布密度情况。

通过小提琴图,你可以快速了解数据的分布形状、集中趋势和离散程度,并且可以比较不同类别或组之间的数据分布情况。通常在数据探索阶段用于可视化单个或多个变量的分布特征。

 示例图:

示例代码:

library(ggplot2)
library(dplyr)
library(tidyr)

# 创建一个随机的数据框
simulated_data <- data.frame(
  V1 = rnorm(100, mean = 0, sd = sqrt(0.5)),  # 生成均值为 mean,标准差为 sd 的正态分布随机值
  V2 = rgamma(100, shape = 2, scale = 1), # 生成伽马分布随机值,shape 为形状参数,scale 为尺度参数
  V3 = runif(100, min = 0, max = 1), # 生成均值为 mean,标准差为 sd 的正态分布随机值
  V4 = rpois(100, lambda = 5), # 生成泊松分布随机值,lambda 为泊松分布的参数
  V5 = rexp(100, rate = 0.5), # 生成指数分布随机值,rate 为指数分布的参数
  V6 = rbinom(100, size = 10, prob = 0.1) # 生成二项分布随机值,size 为试验次数,prob 为成功的概率
)

simulated_data <- simulated_data %>%
  rename(
    Case1 = V1,
    Case2 = V2,
    Case3 = V3,
    Case4 = V4,
    Case5 = V5,
    Case6 = V6
  )

simulated_data_long <- gather(simulated_data, key = "variable", value = "value")
# 创建一个含有多个琴图的图表,每个琴图对应数据的一个列
ggplot(simulated_data_long, aes(x = variable, y = value)) +
  geom_violin(alpha = 0.5, size = 0.9) +# 调整透明度和线条宽度
  geom_boxplot(fill = "gray", alpha = 0.4, width = 0.2) +# 调整透明度和线条宽度
  geom_jitter(aes(color = variable), width = 0.2, alpha = 0.7, size = 3) +# 调整透明度和点的大小
  labs(
    x = " ",
    y = "",
    title = " "
  ) +
  scale_color_discrete(name = " ") +
  theme_minimal() +
  facet_wrap(~ variable, scales = "free")+
  theme(
    strip.text = element_blank(),
    legend.text = element_text(size = 12),  # 调整图例文本大小
    legend.title = element_text(size = 15),  # 调整图例标题大小
    legend.key.size = unit(1.5, "lines"),  # 调整图例间距大小
    axis.title.y = element_text(size = 18) # 调整Y轴标签的字体大小
  )

### 使用 R 语言 ggplot2 绘制小提琴图 在 R 语言中,`ggplot2` 是一个强大的图形绘制包,能够轻松创建复杂而美观的小提琴图。下面是一个完整的示例代码,展示了如何使用 `ggplot2` 来绘制带有箱线图叠加的小提琴图。 #### 安装和加载必要的库 如果尚未安装 `ggplot2` 包,则可以通过以下命令进行安装: ```r install.packages("ggplot2") ``` 接着导入所需的库: ```r library(ggplot2) ``` #### 准备数据集 假设有一个名为 `data` 的数据框,其中包含两列:`Group` 和 `Variable`。这里以随机生成的数据为例: ```r set.seed(123) # 设置随机种子以便结果可重复 data <- data.frame( Group = rep(c('A', 'B', 'C'), each=50), Variable = c(rnorm(50), rnorm(50, mean=1.5), rnorm(50, mean=-1)) ) head(data) ``` 此段代码会创建三个不同的组别 A、B 和 C,并分别为它们分配一组服从正态分布的数值[^2]。 #### 创建基础小提琴图 通过调用 `ggplot()` 并指定美学映射(aes),再添加 `geom_violin()` 层来构建基本的小提琴图结构: ```r p_base <- ggplot(data, aes(x = Group, y = Variable, fill = Group)) + geom_violin(trim = FALSE) print(p_base) ``` 此处设置 `trim = FALSE` 可让两侧保持完整形状而不被裁剪掉稀疏部分[^4]。 #### 添加箱线图增强效果 为了让图表更具表现力,可以在每把小提琴内部嵌套一个小尺寸的箱线图 (`geom_boxplot`) ,这有助于直观理解各分位数的位置以及异常值的存在状况: ```r p_enhanced <- p_base + geom_boxplot(width = 0.1, outlier.shape = NA, color="black") print(p_enhanced) ``` 参数 `width = 0.1` 控制着箱线图宽度;`outlier.shape = NA` 表示不显示离群点,因为这些信息已经在小提琴轮廓里有所体现。 #### 应用主题美化外观 最后应用简洁的主题样式使得整个图像看起来更加整洁大方: ```r final_plot <- p_enhanced + theme_minimal() print(final_plot) ``` 这样就完成了一个既保留了原始观测密度又提供了统计摘要信息的小提琴加箱线混合型图表[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值