ggplot2绘图需求:按染色体着色+仅显示geom_vline图例
全基因组数据绘图问题
我有一个全基因组数据集,希望按以下方式绘图:
- 每条染色体使用不同颜色
- 用
geom_vline高亮来自另一表格的特定区间 - 图例仅显示
geom_vline元素
我尝试了多种方法,但似乎无法同时满足这三个要求!
第一种尝试(实现前两个要求,无法显示geom_vline图例)
ggplot(allStats, aes(x = mid2, y = Fst_group1_group5, color = as_factor(scaffold))) + geom_point(size = 2) + geom_vline(xintercept = chrom$add, color = "grey") + scale_y_continuous(expand = c(0,0), limits = c(0, 1)) + scale_x_continuous(labels = chrom$chrID, breaks = axis_set$center) + scale_color_manual(values = rep(c("#276FBF", "#183059"), unique(length(chrom$chrID)))) + scale_size_continuous(range = c(0.5,3)) + labs(x = NULL, y = "Fst SBM vs OC") + theme_minimal() + theme( legend.position = "none", panel.grid.major.x = element_blank(), panel.grid.minor.x = element_blank(), panel.grid.major.y = element_blank(), panel.grid.minor.y = element_blank(), axis.title.y = element_text(), axis.text.x = element_text()) + geom_vline(data = allStats_fstPi_group15, aes(xintercept = allStats_fstPi_group15$mid2), color = "orange", show.legend = T)
绘图效果:染色体按指定交替颜色分块显示,橙色竖线成功高亮目标区间,但图例被完全隐藏,无法展示橙色竖线的说明信息
第二种尝试(实现后两个要求,无法按染色体分块着色)
cols <- c("SBM vs OC" = rep(c("#276FBF", "#183059"), unique(length(chrom$chrID))), "90th percentile (Fst vs Pi)" = "orange") ggplot(allStats, aes(x = mid2)) + geom_point(aes(y = Fst_group1_group5, color = as_factor(scaffold)), size = 2) + geom_vline(data = allStats_fstPi_group15, aes(xintercept = allStats_fstPi_group15$mid2, color = "90th percentile (Fst vs Pi)")) + scale_color_manual(values = cols)
绘图效果:图例正常显示橙色竖线的说明,但染色体无法按预期的交替颜色分块呈现
我了解到图例问题在于color需要放在aes()中,所以想询问:我想要实现的效果是否无法达成?
内容的提问来源于stack exchange,提问作者Rachel
相关产品推荐
相关产品推荐

