复现NC图表---配对散点小提琴的绘制

看到一篇NC文章绘制的小提请图,文章提供了数据和代码,文章的绘制方式是用的函数,一般直接使用也会出错,这里我们解析下绘图的内部机制,一步一步可能有助于理解为什么ggplot等绘图函数的一些参数。****注释代码及数据已上传群文件!

图片

整体而言,小提琴的绘制是依赖vioplot这个包的。


BiocManager::install("vioplot")
library(vioplot)
library(dplyr)
setwd("D:/KS科研分享与服务_公众号文章/vioplot配对连线小提琴图")
df <- read.csv("df.csv", header = T)

之后我们为排队数据的分组添加上颜色,并设置一列坐标,主要是为了抖动点的绘制,这样有一个动态的感觉,否则只有一个坐标,点就是竖着排列的。

cols <- data.frame(Disease.state=c('Patient','Relative'),
                   color = c('#E69F00', "#55B4EA"))
df_merge <- full_join(df, cols, by = "Disease.state")

# colnames(df)
# [1] "sample.id"     "DonorID"       "Family.ID"     "Disease.state" "Richness"  

df_merge$dummy <- 1
df_merge$dummy[df_merge$Disease.state != "Patient" ] <- 2
df_merge$dummy  <- df_merge$dummy + sample(-100 : 100, nrow(df_merge), replace = T)/2000

然后接可以绘制基本的小提琴图了,计算两组平均值并添加。

var.pat <- df$Richness[df$Disease.state == "Patient"]
var.rel <- df$Richness[df$Disease.state == "Relative"]


vioplot(var.pat,  var.rel, drawRect = F,
        names = c("Patients", "Relatives"),
        col=unique(df_merge$color),
        ylim = c(0,240))

segments(.7, mean(var.pat),1.3, mean(var.pat), lwd = 2)
segments(1.7, mean(var.rel), 2.3, mean(var.rel), lwd = 2)

添加散点和配对连线。

添加散点和配对连线。


map.pat <- df_merge[df_merge$Disease.state == "Patient", ]
map.rel <- df_merge[df_merge$Disease.state == "Relative", ]
families <- sort(unique(df_merge$Family.ID))

for(i in 1: length(families)){
  #分别获取两个分组数据
  map.pat.i <- map.pat[map.pat$Family.ID ==  families[i], ]
  map.rel.i <- map.rel[map.rel$Family.ID ==  families[i], ]
  #获取分组每个ID在不同组中的值
  var.pat.i <- var.pat[map.pat$Family.ID ==  families[i] ]
  var.rel.i <- var.rel[map.rel$Family.ID ==  families[i] ]

  segments(y0 = var.pat.i,  x0 =  map.pat.i$dummy,
                 y1 =  var.rel.i, x1 =  map.rel.i$dummy,
                 col = 8)

  points(map.pat.i$dummy, var.pat.i, pch = 21, bg = 8)
  points(map.rel.i$dummy, var.rel.i, pch = 21, bg = 8)

}

最后添加上标题等就完成了。


title(ylab ="Richness", cex=1.5)
#显著性检验
res <- t.test(df_merge$Richness ~ df_merge$Disease.state, paired = T)
res
segments(1, 210,2,210, lwd = 2)
text(x=1.5, y=220, labels="Pvalue = 8.324e-09")
图片

**其实用到的函数大多是R的基本函数,我想是可以对一些绘图有理解的。此外,这里作图很不方便,但是步骤是全的。感兴趣的小伙伴可以将其修改,封装为一个通用的函数也是不错的选择。参考我们之前的帖子:https://mp.weixin.qq.com/s?__biz=Mzg5OTYzMzY5Ng==&mid=2247486346&idx=1&sn=5aa734906d6045046346564d73283627&chksm=c0510cc5f72685d3f05f8fef2fcdbd5905c8fa49287263aff909316926a1fd21eb280d21f145&scene=21#wechat_redirect

最后,觉得分享对你有帮助,点个赞,分享一下呗

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容