Wil*_*ton 13 plot r bioinformatics genetics
我想生成一个图,描绘我工作的有机体的14个线性染色体,用于在每条染色体上的特定位置用彩色条进行扩展.理想情况下,我想使用R,因为这是我遇到的唯一编程语言.
我已经探索了各种方法,例如使用GenomeGraphs,但我发现这比我想要的更复杂/显示比我所拥有的更多的数据(例如显示细胞质带)并且通常特异于人类染色体.
我基本上想要的是14个以下尺寸的灰色条:
chromosome size
1 640851
2 947102
3 1067971
4 1200490
5 1343557
6 1418242
7 1445207
8 1472805
9 1541735
10 1687656
11 2038340
12 2271494
13 2925236
14 3291936
Run Code Online (Sandbox Code Playgroud)
然后用彩色标记描绘沿染色体长度散布的约150个位置.例如这些位置的标记:
Chromosome Position
3 817702
12 1556936
13 1131566
Run Code Online (Sandbox Code Playgroud)
理想情况下,我还希望能够根据基因座指定几种不同的颜色,例如
Chromosome Position Type
3 817702 A
12 1556936 A
13 1131566 A
5 1041685 B
11 488717 B
14 1776463 B
Run Code Online (Sandbox Code Playgroud)
例如,"A"标记为蓝色,"B"标记为绿色.
在该图像中粘贴了与我想要产生的非常相似的图(来自Bopp等人,PlOS Genetics 2013; 9(2):e1003293):
任何人都可以推荐一种方法吗?它不一定必须是生物信息学包,如果有另一种方法我可以使用R生成14条特定比例尺寸的条,在条形图上的指定位置有标记.例如,我一直在考虑从ggplot2修改一个简单的条形图,但我不知道如何在特定位置沿着条形图标记.
只需保存您的barplot通话,然后拨打电话segments即可在适当的位置进行标记.例如:
bp <- barplot(dat$size, border=NA, col="grey80")
with(marks,
segments(
bp[Chromosome,]-0.5,
Position,
bp[Chromosome,]+0.5,
Position,
col=Type,
lwd=2,
lend=1
)
)
Run Code Online (Sandbox Code Playgroud)
使用的数据:
dat <- structure(list(chromosome = 1:14, size = c(640851L, 947102L,
1067971L, 1200490L, 1343557L, 1418242L, 1445207L, 1472805L, 1541735L,
1687656L, 2038340L, 2271494L, 2925236L, 3291936L)), .Names = c("chromosome",
"size"), class = "data.frame", row.names = c(NA, -14L))
marks <- structure(list(Chromosome = c(3L, 12L, 13L, 5L, 11L, 14L), Position = c(817702L,
1556936L, 1131566L, 1041685L, 488717L, 1776463L), Type = structure(c(1L,
1L, 1L, 2L, 2L, 2L), .Label = c("A", "B"), class = "factor")), .Names = c("Chromosome",
"Position", "Type"), class = "data.frame", row.names = c(NA,
-6L))
Run Code Online (Sandbox Code Playgroud)