繁体   English   中英

火山图-颜色

[英]Volcano plot - colors

我正在尝试使用ggplot2绘制火山图。 我想根据以下标准使用三种不同的颜色:

  1. qvalue <0.05和meth.diff> 25%=红色
  2. q值<0.05和方法差异<-25%(负25%)=绿色
  3. qvalue <0.05,+ 25和-25之间的方法差异=灰色

之前曾在这里问过类似的问题,我尝试关注它们,但始终收到错误消息。 任何建议将不胜感激。

这是原始数据文件:

    chr  start    end strand       pvalue       qvalue  meth.diff
16 chr1  37801  38100      * 2.246550e-05 4.487042e-04  -36.485769
17 chr1  38101  38400      * 5.699781e-06 1.376471e-04  55.755181
29 chr1  49501  49800      * 1.453030e-18 2.442391e-16 -18.381131
35 chr1  62701  63000      * 5.547627e-03 3.686303e-02  -31.871711
54 chr1 122401 122700      * 3.917230e-03 2.845933e-02   63.443366
57 chr1 130201 130500      * 8.941091e-04 9.253737e-03  -8.347167

myDiff1p$threshold = factor(ifelse(myDiff1p$meth.diff>25 & myDiff1p$qvalue< 0.05, 1, 
  ifelse(myDiff1p$meth.diff<-25 & myDiff1p$qvalue< 0.05,-1,0)))

ggplot(data=myDiff1p, aes(x=meth.diff, y=-log10(qvalue))) + 
  geom_point(aes(color=myDiff1p$threshold), alpha=0.4, size=1.75)+ 
  geom_vline(xintercept=c(-25,25), color="red", alpha=1.0)+ 
  geom_hline(yintercept=2, color="blue", alpha=1.0)+ 
  xlab("Differential Methylation")+ 
  ylab("-log10 (qvalue)")+ 
  theme_bw()+
  xlim(c(-75, 75)) + 
  ylim(c(0, 300))

错误:离散值提供给连续刻度

您在这一行中几乎没有注意到错误:

myDiff1p$threshold = factor(ifelse(myDiff1p$meth.diff>25 & myDiff1p$qvalue< 0.05, 1, 
   ifelse(myDiff1p$meth.diff<-25 & myDiff1p$qvalue< 0.05,-1,0)))

由于myDiff1p$meth.diff<-25没有空格,因此将其解释为myDiff1p$meth.diff <- 25而不是myDiff1p$meth.diff < -25 结果, meth.diff被弄乱了。

这是我的建议:

library(dplyr)

myDiff1p <- myDiff1p %>%
  mutate(threshold = factor(case_when(meth.diff > 25 & qvalue < 0.05 ~ "cond1",
                                      meth.diff < -25 & qvalue < 0.05 ~ "cond2",
                                      TRUE ~ "cond3")))

ggplot(data=myDiff1p, aes(x=meth.diff, y=-log10(qvalue))) + 
  geom_point(aes(color=myDiff1p$threshold), alpha=0.4, size=1.75)+ 
  geom_vline(xintercept=c(-25,25), color="red", alpha=1.0)+ 
  geom_hline(yintercept=2, color="blue", alpha=1.0)+ 
  xlab("Differential Methylation")+ 
  ylab("-log10 (qvalue)")+ 
  theme_bw()+
  xlim(c(-75, 75)) +
  ylim(c(0, 300)) +
  scale_color_manual(name = "Threshold",
                     values = c("cond1" = "red", "cond2" = "green", "cond3" = "grey"))

情节

我用条件标记阈值因子,并在scale_color_manual()中的命名向量中定义了条件和颜色之间的映射。 另外, dplyr::case_when()个人喜好,但我认为dplyr::case_when()看起来比嵌套的ifelse()语句更整洁。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM