我试图绘制一个叫曼哈顿情节的东西,这是全基因组关联研究(基因组学)中常见的一种情节 . 在x轴上是碱基对中的位置,并且在y轴上是-log10(p值),图上的每个点代表特定的遗传多态性(突变) . 每种颜色代表不同的染色体 .

我有一个名为 data_geno 的数据框,其变量 x_pos 包含沿x轴的位置, p 具有p值(用于确定y轴值)和 chr ,其给出染色体编号(从1到26) . 变量 last_bp_vec 字面上包含每个染色体的最大x轴位置 .

从以下代码:

ggplotcmd <- ggplot(data_geno, aes(x=x_pos, y=-log10(p), color=chr)) + 
    scale_x_continuous(breaks = last_bp_vec,minor_breaks=NULL,labels=seq(26)) + 
    geom_hline(aes(yintercept=-log10(5e-08))) + 
    geom_point(shape=20, size = 1) + 
    geom_point(data=data_imp,color="black",shape=4) + 
    xlab("") + 
    theme(axis.text.x = element_text(hjust=0)) +  
    scale_color_manual(values=c("deeppink2", "orange", "green2", "blue", "yellow", 
        "purple",  "magenta", "darkgreen", "gold", "firebrick", "yellowgreen", "red", 
        "black", "turquoise3", "tomato", "darkblue", "chocolate", "violet", "slategray4", 
        "OrangeRed", "darkblue", "deeppink", "aquamarine3", "steelblue1", "mediumorchid", 
        "yellowgreen")) + 
    ggtitle(man_title)

我制作了这样的情节:

Manhattan plot

我想做的就是将x轴标签位置移动到各自点的中间位置(所以我不依赖于传说),即我希望“1”位于洋红色的中间位置彩色点和“2”坐落在橙色点的中间等... x轴刻度线和网格线位于正确的位置,我希望保留那些 .

我知道使用 theme(axis.text.x = element_text(hjust=VALUE)) 的解决方案,但这不起作用,因为它将每个标签移动相同的量,并且由于染色体的大小不同,我需要每个标签移动不同的量 .

我还在学习使用ggplot和(更一般地说)R,所以如果我做了一些可怕的错误或者有一种更简单的方法来实现我想要的东西,请纠正我!

任何帮助,将不胜感激!

谢谢 .