我有以下格式的数据。列V1是感兴趣的基因组位置,列V4和V5是两个不同时间点的次要等位基因频率。我想制作一个简单的xy散点图,其中一条线连接从时间点1到时间点2(在y轴上绘制)的每个特定位置的等位基因频率。 (注意,我实际上有数百到数千个数据点。)
V1 V2 V3 V4 V5
1 153 1/113 1/115 0.008849558 0.008695652
2 390 0/176 150/152 0.000000000 0.986842105
3 445 1/149 1/152 0.006711409 0.006578947
4 507 0/154 144/146 0.000000000 0.986301370
5 619 1/103 99/101 0.009708738 0.980198020
6 649 0/138 120/123 0.000000000 0.975609756
我觉得我应该能够用ggplot来完成这个,但我不知道如何去做,因为我不知道如何为每个基因组位置指定两个y值,也不指定一列作为一个类别。我怀疑数据需要以某种方式重新塑造。非常感谢任何帮助或建议!
更新
感谢所有给我建议的人。我不认为我非常清楚想要将时间点作为我的x轴而不是基因组位置 - 我的道歉。希望这张照片澄清了这一点!
我已使用以下代码成功生成了我想要制作的情节:
ggplot(dat)+ geom_segment(aes(x =“timepoint 1”,y = V4,xend =“timepoint2”,yend = V5))
这就是情节与更多数据点相似......
我还没有改变轴标题并且还使用了边距,但这是一般的想法!
答案 0 :(得分:1)
如果您的示例数据位于DF
,那么
ggplot(DF) +
geom_segment(aes(x=V4, y="timepoint 1", xend=V5, yend="timepoint 2"))
答案 1 :(得分:0)
with(dat, plot(x=V1, y=V5, ylim=c(0,1) ,type='n',
xaxt="n", ylab="Allele Frequency", xlab="Genomic Location"))
with(dat, axis(1, V1,V1, cex.axis=0.7) )
with( dat, arrows(x0=V1,x1=V1+10, y0=V4, y1=V5) )
您可以清理标签并调整颜色和箭头功能:
?arrows
答案 2 :(得分:0)
问题并不完全清楚,但我认为这就是你所追求的:
ggplot(d, aes(x=V1, y=V4, ymin=V4, ymax=V5))
+ geom_linerange()
+ xlab('Genomic location')
+ ylab('Minor allele frequency')
文档:http://docs.ggplot2.org/current/geom_linerange.html