R 无法修改ggplot2中的图例属性
我正在尝试修改此绘图图例上的颜色、标签和分隔符,但缩放xxx yyyy选项不起作用。有什么建议吗 我的输入如下:R 无法修改ggplot2中的图例属性,r,ggplot2,colors,label,legend,R,Ggplot2,Colors,Label,Legend,我正在尝试修改此绘图图例上的颜色、标签和分隔符,但缩放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 922502
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"))
如果您有任何建议,我们将不胜感激。请注意,您在代码中使用的是“Key”,而您显示的输入数据具有“Key”
首先,我们模拟一些看起来像您的数据:
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)
然后,我们使用中断来颠倒顺序并给出标签:
bp+scale_color_manual(name="Gene Sets",values = COLS,
breaks = rev(names(COLS)),labels=c("MAF <= 1%","CADD >=20"))
bp+scale\u color\u手册(name=“Gene set”,value=COLS,
断开=版本(名称(COL)),标签=c(“MAF=20”))
我看到了一些可能有用的想法。首先,映射到color
而不是fill
。由于这是一个离散值,请尝试scale\u color\u manual()
或scale\u color\u discrete()
。其次,您用于x
的POS
变量在我看来是连续的,而不是离散的,这可能是scale\u x\u discrete()
不适合您的原因。嗨,aosmith!scale\u color\u手册()!!!谢谢但不幸的是,在将POS从连续修改为离散后,scale_x_discrete()不是。我想我最后的办法是改变关键变量的描述和它在DataFrame中的级别为什么你需要x是离散的?这是基因的位置,对吗?或者您想更改图例的顺序,就像之前的MAF一样CADD@StupidWolf是的,你是对的,我希望能够改变传说的顺序,以及它的内容,以便能够引入像@StupidWolf这样的特殊角色。谢谢你下面的建议,这些都很有效。是的,当我介绍上面的代码时,key vs key是一个拼写错误,我的错
bp+scale_color_manual(name="Gene Sets",values = COLS,
breaks = rev(names(COLS)),labels=c("MAF <= 1%","CADD >=20"))