日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【R语言】24种R语言新手入门之vioplot小提琴图(三)

發(fā)布時(shí)間:2024/5/14 编程问答 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【R语言】24种R语言新手入门之vioplot小提琴图(三) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

  • 一、前言
  • 二、基本圖形
      • 2.1 基本小提琴圖
      • 2.2 添加數(shù)值
      • 2.3 添加散點(diǎn)
      • 2.4 上色
      • 2.5 柱狀小提琴?gòu)?fù)合圖
      • 2.6 拆分小提琴圖
      • 2.7 排序
  • 三、進(jìn)階畫圖
      • 3.1 多基因組間小提琴圖
      • 3.2 單基因多組小提琴圖
      • 3.3 多基因多組小提琴圖
  • 四、討論

一、前言

柱狀圖和箱線圖的代碼能理解了其實(shí)發(fā)現(xiàn)好多作圖都是可以觸類旁通的,小提琴圖作為科研結(jié)果常用展示圖也不可或缺,用ggplot或者vioplot。

二、基本圖形

2.1 基本小提琴圖

library("vioplot") #準(zhǔn)備數(shù)據(jù) ToothGrowth$dose <- as.factor(ToothGrowth$dose) p <- ggplot(ToothGrowth, aes(x=dose, y=len)) + geom_violin(trim=T) #T改為F即完整的小提琴圖 p

#選擇需要顯示的x項(xiàng) p + scale_x_discrete(limits=c("0.5", "2"))

2.2 添加數(shù)值

#添加中位值median,均值改mean p + stat_summary(fun.y=mean, geom="point", shape=23, size=2, color="red")

#中位數(shù)和四分位數(shù) p + geom_boxplot(width=0.1)

#均值和標(biāo)準(zhǔn)差 p <- ggplot(ToothGrowth, aes(x=dose, y=len)) + geom_violin(trim=FALSE) p + stat_summary(fun.data=mean_sdl, mult=2, geom="pointrange", color="red")

2.3 添加散點(diǎn)

#帶點(diǎn)小提琴圖 p + geom_dotplot(binaxis='y', stackdir='center', dotsize=1) #點(diǎn)發(fā)散 p + geom_jitter(shape=16, position=position_jitter(0.2))

2.4 上色

定義顏色的代碼跟前兩章柱狀圖箱線圖的一樣,都對(duì)應(yīng)著線框顏色和填充顏色。

2.5 柱狀小提琴?gòu)?fù)合圖

#準(zhǔn)備數(shù)據(jù) set.seed(1) n <- 10000 ii <- rbinom(n, 1, 0.5) data <- rnorm(n, mean = 130, sd = 10) * ii +rnorm(n, mean = 80, sd = 5) * (1 - ii) #柱狀圖 hist(data, probability = TRUE, col = "grey", axes = FALSE,main = "", xlab = "", ylab = "") axis(1) #密度線 lines(density(data), lwd = 2, col = "red") #添加小提琴圖 par(new = TRUE) vioplot(data, horizontal = TRUE, yaxt = "n", axes = FALSE,col = ggsci::pal_npg("nrc",alpha = 0.2)(1))

2.6 拆分小提琴圖

#準(zhǔn)備數(shù)據(jù),分組 data <- trees tall <- trees[trees$Height >= 76, ] small <- trees[trees$Height < 76, ] #繪圖 vioplot(tall, side = "left", plotCentre = "line", col = "#3B4992B2") vioplot(small, side = "right", plotCentre = "line", col = "#EE0000B2", add = TRUE) #圖例 legend("topleft", legend = c("Tall", "Small"), fill = c("#3B4992B2","#EE0000B2"), cex = 1.25)

2.7 排序

#分畫布 par(mfrow = c(1, 2)) data <- chickwts#低到高 medians <- reorder(data$feed, data$weight, median) #medians <- with(data, reorder(feed, weight, median)) # 也可用這行,效果一樣的,下面同理 vioplot(data$weight ~ medians, col = 2:(length(levels(data$feed)) + 1),xlab = "", ylab = "Weight", las = 2) #高到低 medians <- reorder(data$feed, -data$weight, median) vioplot(data$weight ~ medians, col = 2:(length(levels(data$feed)) + 1),xlab = "", ylab = "Weight", las = 2)

三、進(jìn)階畫圖

3.1 多基因組間小提琴圖

library("ggpubr") library("reshape2") norcol="#EE0000FF" #疾病組 concol="#3B4992FF" #正常組#讀取文件 rt=read.table(inputFile,header=T,sep="\t",check.names=F,row.names=1) x=colnames(rt)[1] colnames(rt)[1]="Type"#轉(zhuǎn)換分類矩陣數(shù)據(jù) data=melt(rt,id.vars=c("Type")) colnames(data)=c("Type","Gene","Expression")#繪圖 pdf(file=outFile, width=6, height=5) p=ggviolin(data, x="Gene", y="Expression", color = "Type", ylab="Gene expression",xlab="Gene",#legend.title=x,add.params = list(fill="white"),palette = c(concol,norcol),width=1, add = "boxplot") #p=p+rotate_x_text(60) p1=p+stat_compare_means(aes(group=Type),method="wilcox.test", #可換其他統(tǒng)計(jì)方法symnum.args=list(cutpoints = c(0, 0.001, 0.01, 0.05, 1), symbols = c("***", "**", "*", " ")),label = "p.signif") print(p1) dev.off()

3.2 單基因多組小提琴圖

library(ggpubr) library(ggsci) ggsci::pal_tron("legacy")(4) color=c("#FF410DFF","#6EE2FFFF","#F7C530FF","#95CC5EFF")#讀取文件 rt=read.table(inputFile,header=T,sep="\t",check.names=F) x=colnames(rt)[2] y=colnames(rt)[3] colnames(rt)=c("id","Type","Expression")#設(shè)置分組 group=levels(factor(rt$Type)) rt$Type=factor(rt$Type, levels=group) comp=combn(group,2) my_comparisons=list() for(i in 1:ncol(comp)){my_comparisons[[i]]<-comp[,i]}#繪圖 pdf(file=outFile, width=6, height=5) ggviolin(rt, x="Type", y="Expression", fill = "Type", xlab=x, ylab=paste0(y," expression"),legend.title=x,palette = color,add = "boxplot", add.params = list(fill="white"))+ #stat_compare_means(comparisons = my_comparisons) #顯示具體數(shù)值 stat_compare_means(comparisons = my_comparisons,symnum.args=list(cutpoints = c(0, 0.001, 0.01, 0.05, 1), symbols = c("***", "**", "*", "ns")),label = "p.signif") #顯著替換成星號(hào) dev.off()

3.3 多基因多組小提琴圖

library(ggplot2) library(reshape2) color = c("#FF410DFF","#6EE2FFFF","#F7C530FF","#95CC5EFF")#讀取文件 rt=read.table(inputFile, header=T,sep="\t",check.names=F,row.names=1) x=colnames(rt)[1] colnames(rt)[1]="Type"#計(jì)算組間差異 geneSig=c("") for(gene in colnames(rt)[2:ncol(rt)]){rt1=rt[,c(gene,"Type")]colnames(rt1)=c("expression","Type")p=1if(length(levels(factor(rt1$Type)))>2){test=kruskal.test(expression ~ Type, data = rt1)p=test$p.value}else{test=wilcox.test(expression ~ Type, data = rt1)p=test$p.value}Sig=ifelse(p<0.001,"***",ifelse(p<0.01,"**",ifelse(p<0.05,"*","")))geneSig=c(geneSig,Sig)# 根據(jù)p值顯著標(biāo)星號(hào) } colnames(rt)=paste0(colnames(rt),geneSig) #轉(zhuǎn)換數(shù)據(jù)類型 data=melt(rt,id.vars=c("Type")) colnames(data)=c("Type","Gene","Expression")#繪圖 pdf(file=outFile, width=9, height=5) p1=ggplot(data,aes(x=Type,y=Expression,fill=Type))+guides(fill=guide_legend(title=x))+labs(x = x, y = "Gene expression")+ #y軸geom_violin()+ scale_fill_manual(values = color) + geom_boxplot(width=0.2,position=position_dodge(0.9))+ facet_wrap(~Gene,nrow =1)+ theme_bw()+theme(axis.text.x = element_text(angle = 45, hjust = 1)) print(p1) dev.off()

四、討論

小提琴圖和箱線圖其實(shí)大同小異,都是常用于展示基因組間差異表達(dá),很基礎(chǔ)的描述性統(tǒng)計(jì)可視化圖。和violinplot區(qū)分開來,部分代碼不同,但是效果和目的一樣。每個(gè)圖都可以自己換線框、填充顏色透明度等,發(fā)文不重復(fù),同樣可關(guān)注公主號(hào)「生信初學(xué)者」回復(fù)關(guān)鍵詞【vioplot】獲取代碼和示例數(shù)據(jù)。

總結(jié)

以上是生活随笔為你收集整理的【R语言】24种R语言新手入门之vioplot小提琴图(三)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。