【问题标题】:cannot modify legend attributes in ggplot2无法修改 ggplot2 中的图例属性
【发布时间】:2020-05-01 15:41:40
【问题描述】:

我正在尝试修改此图例的颜色、标签和中断,但 scale_xxx_yyyy 选项不起作用。有什么建议吗?

我的输入是这样的:

     GENE CHR       POS        key        value      LOGP
1   A1BG  19  58862834 MAF1P-pval 0.6456014613 0.1900355
2   A1CF  10  52566602 MAF1P-pval 0.0005533904 3.2569684
3    A2M  12   9225025 MAF1P-pval 0.6912238768 0.1603813
4  A2ML1  12   8975786 MAF1P-pval 0.6855731854 0.1639462
5 A4GALT  22  43089044 MAF1P-pval 0.3471331356 0.4595039
6  A4GNT   3 137843236 MAF1P-pval 0.6070832685 0.2167517
....
31205  ZBTB12   6  31868446 CADD20-pval 0.43193898 0.36457760
31206 ZCCHC24  10  81154122 CADD20-pval 0.01495022 1.82535253
31207 ZDHHC21   9  14619044 CADD20-pval 0.79231233 0.10110358
31208 ZMYND19   9 140477032 CADD20-pval 0.89922171 0.04613322
31209  ZNF710  15  90611241 CADD20-pval 0.07090869 1.14930051
31210  ZYG11B   1  53222142 CADD20-pval 0.27036413 0.56805093

变量键被编码为因子。 我使用代码生成了以下图:

ggplot(merge3, aes(x=POS, y=LOGP, color=Key)) + geom_point(size=0.3) + 
facet_grid(~CHR, switch="x", scales="free_x") + 
theme(axis.text.x=element_blank(),axis.ticks.x=element_blank(), panel.spacing.x=unit(0.001, "lines"), panel.grid = element_blank(), panel.border = element_blank(), strip.background=element_rect(fill="white")) + 
labs(title="stacked Manhattan MAF1P, CADD20", y="-log10(p)", x= "chromosome") + 
scale_y_continuous(limits=c(0,12), expand = c(0,0)) + 
geom_hline(yintercept=5.3, color = "red") + 
geom_hline(yintercept=3.3, color = "blue")

结合两个数据集的曼哈顿图

现在,我尝试使用以下方法修改图例的不同方面,例如颜色、标题、标签或中断:

bp + scale_x_discrete(limits=c("MAF1"<="1%","CADD">="20"))
bp + scale_fill_discrete(name="Gene Sets", breaks=c("MAF <= 1%","CADD >=20"), labels=c("MAF1"<="1%","CADD">="20"))
bp + scale_fill_manual(values = c("#d8b365", "#f5f5f5"))

但这些都不起作用,我只能通过以下方式更改图例标题:

bp + labs(colour="Gene Sets") 

任何建议将不胜感激

【问题讨论】:

  • 我看到了一些可能会有所帮助的想法。首先,您映射到color 而不是fill。由于这是一个离散值,请尝试scale_color_manual()scale_color_discrete()。其次,您用于xPOS 变量在我看来是连续的而不是离散的,这可能解释了为什么scale_x_discrete() 不适合您。
  • 嗨,奥史密斯! scale_color_manual() 工作!!!谢谢!!!但不幸的是,将 POS 从连续修改为离散后的 scale_x_discrete() 不是。我想我最后的手段是更改数据框中关键变量及其级别的描述
  • 为什么你需要 x 是离散的?是基因的位置吧?或者你想改变图例的顺序,比如在 CADD 之前有 MAF
  • @StupidWolf 是的,你是对的,我希望能够改变图例的顺序,以及它的内容,以便能够引入像 这样的特殊字符
  • @StupidWolf 感谢您在下面提出的建议,效果很好。是的,当我介绍上面的代码时,key vs Key 是一个错字,我的错

标签: r ggplot2 colors label legend


【解决方案1】:

请注意,您在代码中使用“键”,而您显示的输入数据具有“键”。

首先我们模拟一些看起来像你的数据:

library(TxDb.Hsapiens.UCSC.hg19.knownGene)
g = genes(TxDb.Hsapiens.UCSC.hg19.knownGene)
g = g[seqnames(g) %in% seqlevels(g)[1:24]]
seqlevels(g) = sub("chr","",seqlevels(g))

merge3 = data.frame(GENE=rep(g$gene_id,2),
CHR=rep(as.character(seqnames(g)),2),
POS=rep(start(g),2),
LOGP=-log10(runif(length(g)*2)),
Key = rep(c("MAF1P-pval","CADD20-pval"),each=length(g))
)
merge3$CHR = factor(merge3$CHR,levels=seqlevels(g)[1:24])
head(merge3)

       GENE CHR       POS       LOGP        Key
1         1  19  58858172 0.04981794 MAF1P-pval
2        10   8  18248755 1.83126403 MAF1P-pval
3       100  20  43248163 0.46686285 MAF1P-pval
4      1000  18  25530930 0.96742037 MAF1P-pval
5     10000   1 243651535 0.31012565 MAF1P-pval
6 100008586   X  49217763 0.61290850 MAF1P-pval

然后我们绘制:

bp = ggplot(merge3, aes(x=POS, y=LOGP, color=Key)) + geom_point(size=0.3) + 
facet_grid(~CHR, switch="x", scales="free_x") + 
theme(axis.text.x=element_blank(),axis.ticks.x=element_blank(), panel.spacing.x=unit(0.001, "lines"), panel.grid = element_blank(), panel.border = element_blank(), strip.background=element_rect(fill="white")) + 
labs(title="stacked Manhattan MAF1P, CADD20", y="-log10(p)", x= "chromosome") + 
scale_y_continuous(limits=c(0,12), expand = c(0,0)) + 
geom_hline(yintercept=5.3, color = "red") + 
geom_hline(yintercept=3.3, color = "blue")

最后一部分修改你的图例,所以你的键是按字母顺序排序的,为了减少混乱,首先设置颜色:

COLS=c("#d8b365", "#f5f5f5")
names(COLS) = levels(merge3$Key)

然后我们用break来颠倒顺序,给标签:

bp+scale_color_manual(name="Gene Sets",values = COLS,
breaks = rev(names(COLS)),labels=c("MAF <= 1%","CADD >=20"))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-05
    • 2012-08-21
    • 2023-03-12
    • 1970-01-01
    • 2016-06-23
    • 1970-01-01
    • 2021-08-27
    相关资源
    最近更新 更多