首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场

R火山图
EN

Stack Overflow用户
提问于 2017-06-02 07:04:54
回答 3查看 24.3K关注 0票数 0

我有这行代码:

代码语言:javascript
运行
复制
plot(gene_list$logFC, -log10(gene_list$P.Value),xlim=c(-10, 10), ylim=c(0, 15),xlab="log2 fold change", ylab="-log10 p-value")

这就产生了火山图;然而,我想找到一种方法,在那里我可以用红色着色点>log(2)和

编辑:好的,作为一个例子,我试图做以下工作来获得火山图:

代码语言:javascript
运行
复制
install.packages("ggplot2")

然后

代码语言:javascript
运行
复制
gene_list <- read.table("/Users/Javi/Desktop/gene_list.csv", header=T, sep=",")

require(ggplot2)
##Highlight genes that have an absolute fold change > 2 and a p-value <    0.05
gene_list$threshold = as.factor(abs(gene_list$logFC) > 2 & gene_list$P.Value < 0.05)

构造绘图对象

代码语言:javascript
运行
复制
g = ggplot(data=gene_list, aes(x=logFC, y=-log10(P.Value),  colour=my_palette)) +
geom_point(alpha=0.4, size=5) +
theme(legend.position = "none") +
xlim(c(-10, 10)) + ylim(c(0, 15)) +
xlab("log2 fold change") + ylab("-log10 p-value")

我想要做的是将logFC值>2颜色,用蓝色表示logFC值< -2。

EN

回答 3

Stack Overflow用户

发布于 2017-06-02 07:37:57

您需要使用col参数,这样的东西应该可以做到:

代码语言:javascript
运行
复制
# first set up the plot
plot(gene_list$logFC, -log10(gene_list$P.Value),
     xlim=c(-10, 10), ylim=c(0, 15),
     xlab="log2 fold change", ylab="-log10 p-value",
     type="n")
# then add the points
sel <- which(gene_list$logFD<=log(2)) # or whatever you want to use
points(gene_list[sel,"logFC"], -log10(gene_list[sel,"P.value"]),col="black")
sel <- which(gene_list$logFD>log(2)) # or whatever you want to use
points(gene_list[sel,"logFC"], -log10(gene_list[sel,"P.value"]),col="red")
票数 2
EN

Stack Overflow用户

发布于 2017-06-02 10:16:42

您需要添加一个阈值列,报告logFC值> 2、logFC值< -2和中间值之间的标签:

代码语言:javascript
运行
复制
mydata<-mydata%>%mutate(threshold = ifelse(logFC >= 2,"A", ifelse(logFC<=-2 , "B", "C")))

接下来,您将对火山图进行编码,并通过geom_pointscale_colour_manual分配颜色。B是logFC<=-2的标签是蓝色的

代码语言:javascript
运行
复制
ggplot(mydata, aes(x=logFC, y=log10)) +
geom_point(aes(colour = threshold), size=2.5) +
scale_colour_manual(values = c("A"= "yellow", "B"="blue",  "C"= "black"))
票数 1
EN

Stack Overflow用户

发布于 2022-08-11 09:49:31

您将需要创建另一列,然后插入一些文本,例如,调高的、下调的。然后根据logFC的值设置值

代码语言:javascript
运行
复制
de_genes$diffexpressed <- "NO"
de_genes$diffexpressed[de_genes$logFC>0.58]<-"UP"
de_genes$diffexpressed[de_genes$logFC<0.58]<-"DOWN"

然后,使用ggplot生成绘图,并使用带有标签的列对它们进行标记。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44322793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档