前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言基础绘图教程——第9章:火山图和QQ图

R语言基础绘图教程——第9章:火山图和QQ图

作者头像
DoubleHelix
发布2019-08-23 14:10:36
1.7K0
发布2019-08-23 14:10:36
举报
文章被收录于专栏:生物信息云生物信息云

火山图

代码语言:javascript
复制
diff0 = read.table("volcano_plot.txt",sep="\t",header=T)
P.value = diff0$adj.P.Val
FC = diff0$logFC
df <- data.frame(P.value,FC)
df$threshold = as.factor(abs(df$FC) > log(1.5,2) & df$P.value < 0.01)
levels(df$threshold) = c('#f1f1f3','red')
df$logp = -log10(df$P.value)

利用base系统绘图

代码语言:javascript
复制
#using base 
plot(x = df[,2],y = df[,4], pch=16, col=df$threshold, 
     xlab="Fold change", ylab="-Log10(Pvalue)",
     cex=0.2, main="Volcano Plot")
abline(v=c(-log(1.5,2),log(1.5,2)), h=-log10(0.01),col="green")

利用ggplot2绘图

代码语言:javascript
复制
#using ggplot2
library(ggplot2)
ggplot(data=df,aes(x=FC,y=-log10(P.value)))+
  geom_point(colour=df$threshold)

QQ图

代码语言:javascript
复制
#生成100个正态分布的随机数
data = rnorm(100,0,1)
#生成柱状图,查看所生成随机数的分布情况
hist(data,10)
代码语言:javascript
复制
#利用经验累积分布函数(empirical cumulative distribution function, eCDF)
#来评价数据分布的情况
data.cdf = ecdf(data)
plot(data.cdf)
代码语言:javascript
复制
#QQ-plot 正态分布
#50 numbers
data50 = rnorm(100,0,1)
hist(data50,20)
qqnorm(data50, pch=16)
qqline(data50, pch=16, col="red")
代码语言:javascript
复制
#100 numbers
data100 = rnorm(100,0,1)
hist(data100,20)
qqnorm(data100, pch=16)
qqline(data100, pch=16, col="red")
代码语言:javascript
复制
#150 numbers
data150 = rnorm(150,0,1)
hist(data150,20)
qqnorm(data150, pch=16)
qqline(data150, pch=16, col="red")
代码语言:javascript
复制
#1000 numbers
data1000 = rnorm(1000,0,1)
hist(data1000,20)
qqnorm(data1000, pch=16)
qqline(data1000, pch=16, col="red")
代码语言:javascript
复制
#put the figures all together to see the change and the differents
nf <- layout(matrix(c(1,2,3,4),2,2,byrow=TRUE), c(2,2), c(2,2), TRUE)  
layout.show(nf)
#fig1
qqnorm(data50, pch=16, main="QQ-plot for 100 numbers")
qqline(data50, pch=16, col="red")
#fig2
qqnorm(data100, pch=16, main="QQ-plot for 200 numbers")
qqline(data100, pch=16, col="red")
#fig3
qqnorm(data150, pch=16, main="QQ-plot for 500 numbers")
qqline(data150, pch=16, col="red")
#fig4
qqnorm(data1000, pch=16, main="QQ-plot for 1000 numbers")
qqline(data1000, pch=16, col="red")
#Shapiro-Wilk test of normality
shapiro.test(data)
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 MedBioInfoCloud 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • QQ图
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档