大佬教程收集整理的这篇文章主要介绍了如何在 R 中生成重叠的 QQ 图?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想根据 GWAS 结果制作一个重叠的 QQ 图,类似于附图。我已经运行了两个 GWAS 分析,并希望生成一个图形,其中来自两个 GWAS 的 QQ 图相互重叠。为此,我正在使用 R 包“qqman”。
谁能告诉我如何在 R 中做到这一点?
谢谢。
示例图
这有效
(abd = data.frame(a = runif(100,3),b = runif(100,346,455),d = runif(100,3952,4903)) %>%
ggplot() +
geom_qq(aes(sample = a,color = "a")) +
geom_qq(aes(sample = b,color = "b")) +
geom_qq(aes(sample = d,color = "d")) +
theme_minimal())
我不确定您的目标究竟是什么,但数据很可能会重叠并隐藏重要信息。也许您真正需要的是 qq 图的双变量或多变量版本?如果是这种情况,使用马哈拉诺比斯距离的卡方 qq 图可能是更好的选择。
此图将显示带有 MVN::mvn()
为其设置的参数
abd = data.frame(a = runif(100,4903))
MVN::mvn(abd,multivariatePlot = "qq",multivariateOutlierMethod = "quan")
您可以通过这种方式手动创建卡方 qq 图:
(cvAbd = cov(and)) # covariance matrix
(dif = scale(abd,scale = F)) # scaling
# solve() used in next call calculates the inverse matrix
(d = diag(dif %*%
solve(cvAbd) %*% # matrix multiplication
t(dif)))
(r = rank(d)) # ranking
n = dim(abd)[1] # number of observations
p = dim(abd)[2] # number of variables
(ch <- qchisq((r - 0.5)/n,p)) # determine chi-square quantiles
ggplot(data = data.frame(d = d,ch = ch),aes(d,ch)) +
geom_point() +
ggtitle("Chi-Square Q-Q Plot") +
xlab("Squared Mahalanobis Distance") +
ylab("Chi-Square Quantile") +
theme_minimal()
你正在寻找不同的东西——试试这个
您可以用您的数据替换 runif(10000,.5,1)
,
-o
和 e
用于同一向量(两者中的数据相同)
-o2
和 e2
是第二个向量或第二个模型(两者中的数据相同)
这使用情节...
# first model
o = -log10(sort(runif(10000,1),decreasing = FALSE))
e = -log10(ppoints(length(runif(10000,1))))
# second model
o2 = -log10(sort(runif(10000,decreasing = FALSE))
e2 = -log10(ppoints(length(runif(10000,1))))
plotly::plot_ly(x = ~e,y = ~o,name = "p1",type = "scatter",mode = "markers") %>%
add_trace(x = ~e2,y = ~o2,name = "p2") %>%
add_trace(x = c(0,max(e,e2)),y = c(0,mode="lines",name = "Log normal") %>%
layout(xaxis = list(title = 'Expected -log[10](<i>p</i>)'),yaxis = list(title = 'Observed -log[10](<i>p</i>)'))
您请求了 ggplot2
版本 -
ggplot(data.frame(o = o,e = e,o2 = o2,e2 = e2),aes(e,o,color = "First Model")) +
geom_point() +
geom_point(aes(o2,e2,color = "Second Model")) +
geom_abline(intercept = 0,slope = 1,color = "darkred") +
scale_color_discrete("") +
xlab(expression(paste('Expected -log[10](',italic('p'),')'))) +
ylab(expression(paste('Observed -log[10](',')'))) +
theme_minimal()
,
您可以使用 R 包 CMplot
在 R 中生成重叠的 QQ 图。
library(CMplot)
data(pig60K)
pig60K$trait1[sample(1:nrow(pig60K),round(nrow(pig60K)*0.80))] <- NA
pig60K$trait2[sample(1:nrow(pig60K),round(nrow(pig60K)*0.25))] <- NA
CMplot(pig60K,plot.type="q",col=c("dodgerblue1","olivedrab3","darkgoldenrod1"),threshold=1e-6,ylab.pos=2,signal.pch=c(19,6,4),signal.cex=1.2,signal.col="red",conf.int=TRUE,box=FALSE,multracks=
TRUE,cex.axis=2,file="jpg",memo="",dpi=300,file.output=TRUE,verbose=TRUE,ylim=c(0,8),width=5,height=5)
以上是大佬教程为你收集整理的如何在 R 中生成重叠的 QQ 图?全部内容,希望文章能够帮你解决如何在 R 中生成重叠的 QQ 图?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。