在ggplot2中订购[用BP绘制每个chr的pval]

时间:2014-04-05 01:46:27

标签: r plot ggplot2

我试图在基因组上绘制点:每个染色体都会有绘图点。我的数据文件如下所示:

CHROM   BP      P           DP
1      234567   0.0000555   30
.....
Y      12345678 0.09        14

我使用gglopt2绘制每个染色体上由DP着色的P值,使用以下内容:

mc.points <- ggplot(sample,aes(x = BP,y = P, colour =DP)) +
  geom_point() + 
  labs(x = "Chromosome",y = "P") +
  scale_color_gradient2(low = "green", high = "red")

然而,不是在每个BP上以正确的染色体顺序绘制,而是由BP绘制而不考虑染色体数。

有没有办法对数据进行排序以实现这一目标(即按染色体排序然后是BP)?我试图制作CHROM和BP因子,但这似乎会使R崩溃。此外,如果可能的话,有一种方法可以将X轴上的X-tics标记为染色体数而不是BP(类似于曼哈顿情节)。

如果需要,我可以提供虚拟数据,但这很长。

只是提供更新: facet_grid似乎解决了我的问题,但我想知道我是否可以改变它?它通过染色体分割网格,但没有按连续顺序在相同的x轴上绘制它们 - 但是绘制了22个不同的图,使用相同的x轴。任何解决方案?????

1 个答案:

答案 0 :(得分:0)

你是否在剧情之前尝试了一些未经测试的代码:

sample$BP <- factor(sample$BP, 
                    levels=sample[ !duplicated(sample[,"BP"]), "BP"][
                              order(sample[!duplicated(sample[ ,"BP"]),  "chromosome"] )]
                    )

如果您包含合适的样品进行测试,本来会更容易,也可能更紧凑。将来你不应该使用名称`sample&#34;因为它是一个重要的R函数名称。