R语言ggplot2绘制带散点的小提琴图

陈默
陈默
发布时间:2026-10-16 | 6人浏览过
原创

本文介绍如何使用R语言的`ggplot2`包绘制美观的小提琴图并叠加散点图。内容涵盖从CSV数据导入到使用`geom_violin`和`geom_jitter`函数的具体操作,详解了边框样式、抖动宽度以及散点形状的参数设置。

结果或目标

在使用R进行科学计算与统计绘图时,仅绘制普通小提琴图有时会因密度重叠而难以观察个体数据的分布情况。通过在小提琴图上方叠加散点(Jittered points),可以更直观地展示每个观测值的位置,同时保留整体分布的形状。本文将复刻一种常见且视觉效果清晰的“小提琴图+散点”画法。

第1步:准备绘图数据

绘图前需将原始数据整理为长格式(Long Format)或整洁数据集结构。建议先在Excel中整理好数据列,然后另存为CSV格式文件,以便于R语言直接读取和处理。

第2步:在R中读取数据

使用 `read.csv` 函数导入准备好的CSV文件。注意设置 `header = TRUE`(简写为 `T`),表示数据的第一行包含列名;如果文件没有列名,则设为 `FALSE`。

data <- read.csv("your file path", header = T)
# 注释:header=T表示数据中的第一行是列名,如果没有列名就用header=F

第3步:安装并加载必要的包

绘图主要依赖 `ggplot2` 进行图形构建,并使用 `reshape2`(或 `tidyr`)来进行数据变形处理(如将宽表转为长表以便映射美学属性)。使用前需确保已安装并在会话中调用这些库。

library(ggplot2)  
library(reshape2)              
# 注释:package使用之前需要调用

第4步:执行绘图

核心绘图逻辑如下:首先使用 `melt` 函数将数据转换为适合 `ggplot` 的长格式对象 `data_melt`;接着利用 `geom_violin` 绘制小提琴图,并通过 `aes(linetype=NA)` 去掉默认黑边;最后叠加 `geom_jitter` 添加带有透明度的散点,以展示底层数据分布。

data_melt <- melt(data)
ggplot(data_melt, aes(x = variable , y = value , fill = variable)) +
  geom_violin(alpha = 0.5,aes(linetype=NA)) + 
  geom_jitter(shape=21,aes(fill=variable),position = position_jitter(width = 0.2))+
  xlab("Gene")+ylab("Score")+
  theme_bw()+theme(legend.position = "none")

参数详解与个性化定制

移除小提琴图的黑边

默认情况下,`geom_violin()` 会为小提琴轮廓添加黑色边框。若希望获得更简洁的视觉效果,可以在 `geom_violin` 的美学映射(`aes`)中显式指定线条类型为无。

aes(linetype=NA)

未指定时的对比效果如下:

调整散点的宽度与形状

`geom_jitter` 用于添加抖动散点。控制其分散程度的关键参数是 `width`(水平方向)和 `height`(垂直方向)。

  • Width 的影响:当设定 `width=0` 时,散点将严格沿X轴对齐排列,失去随机抖动的效果,可能导致散点完全重叠遮挡。
  • Shape 的选择:`shape` 参数决定了散点的形态。常用的形状有 `21`-`24`(带颜色的实心几何图形)。本例中使用 `shape=21` 配合填充颜色 (`fill`) 可以呈现空心圆环状的散点,既保留了点位又不会过度覆盖背景。

例如,若改为指定 `shape=24`(实心三角形或其他符号),效果图会发生相应变化:

完成判断

成功运行上述代码后,控制台返回图形对象,工作区生成符合预期的小提琴图。图中各分类变量分布曲线平滑(Alpha透明度调节使其可见内部密度),且对应的个体散点清晰可见,无重叠遮挡导致的视觉混乱,即视为绘图完成。

简要总结

以上就是R语言利用ggplot2绘制数据可视化小提琴图画法示例的详细内容,更多关于R语言绘制数据可视化小提琴图的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表