导语
GUIDE ╲
作图丫一直致力于将好用的分析或可视化的R包分享给大家,经常搜寻经典的、好用的、功能全并且配色惊艳的R包。最近在Y叔公众号中发现了一个R包-idiograms。这个R包是在Y叔的指导下完成的,而且小编亲身实测后觉得此R包使用简便好用易调整,因此在这里分享给大家,让更多的人能够作出满意的科研绘图!
加载R包和数据
代码语言:javascript复制#加载 RIdeogram
require(RIdeogram)
#加载包中的测试数据
data(human_karyotype, package="RIdeogram")
data(gene_density, package="RIdeogram")
data(Random_RNAs_500, package="RIdeogram")
human_karyotype数据格式,CE_start和CE_end是centromere的位置。
gene_density 数据格式
Random_RNAs_500数据格式
当然,我们也可以通过read.table()导入数据绘图。
代码语言:javascript复制human_karyotype <- read.table("karyotype.txt", sep = "t", header = T, stringsAsFactors = F)
gene_density <- read.table("data_1.txt", sep = "t", header = T, stringsAsFactors = F)
Random_RNAs_500 <- read.table("data_2.txt", sep = "t", header = T, stringsAsFactors = F)
在计算gene_density时,包中贴心的给出了计算函数。只需要下载gff3文件,利用下边的代码句即可得到。
代码语言:javascript复制gene_density <- GFFex(input = "gencode.v32.annotation.gff3.gz", karyotype = "human_karyotype.txt", feature = "gene", window = 1000000)
绘图
代码语言:javascript复制#绘制染色体
ideogram(karyotype = human_karyotype)
convertSVG("chromosome.svg", device = "png")
代码语言:javascript复制#绘制gene密度
ideogram(karyotype = human_karyotype, overlaid = gene_density)
convertSVG("chromosome.svg", device = "png")
代码语言:javascript复制#绘制marker,可以是SNP、QTL或gene等marker
ideogram(karyotype = human_karyotype, label = Random_RNAs_500, label_type = "marker")
convertSVG("chromosome.svg", device = "png")
代码语言:javascript复制#同时绘制gene密度和marker
ideogram(karyotype = human_karyotype, overlaid = gene_density, label = Random_RNAs_500, label_type = "marker")
convertSVG("chromosome.svg", device = "png")
代码语言:javascript复制#通过colorset1更改heatmap颜色
ideogram(karyotype = human_karyotype, overlaid = gene_density, label = Random_RNAs_500, label_type = "marker", colorset1 = c("#fc8d59", "#ffffbf", "#91bfdb"))
convertSVG("chromosome.svg", device = "png")
代码语言:javascript复制#如果不知道centromere的位置,可绘制不包含centromere位置的染色体
human_karyotype <- human_karyotype[,1:3]
ideogram(karyotype = human_karyotype, overlaid = gene_density, label = Random_RNAs_500, label_type = "marker")
convertSVG("chromosome.svg", device = "png")
代码语言:javascript复制#当绘制的染色体比较少时,在画板固定width=170情况下,染色体的宽度就会增加(左下图)。
#通过调整width=100,染色体宽度变窄,视觉上比较好看(右下图)。
human_karyotype <- human_karyotype[1:10,]
ideogram(karyotype = human_karyotype, overlaid = gene_density, label = Random_RNAs_500, label_type = "marker")
convertSVG("chromosome.svg", device = "png")
代码语言:javascript复制#调整width后发现legend太靠右了,所以我们也要调整这个参数Lx和Ly,设置Lx = 80, Ly = 25。
ideogram(karyotype = human_karyotype, overlaid = gene_density, label = Random_RNAs_500, label_type = "marker", width = 100, Lx = 80, Ly = 25)
convertSVG("chromosome.svg", device = "png")
其他类型图
此R包还能对lable绘制heatmap、line和polygon,具体如下图。
图片保存
可以保存为四种格式,以及对图片大小进行设置,用起来比较方便。
代码语言:javascript复制#使用convertSVG保存转换格式,device可设置为tiff,pdf,jpg和png。
convertSVG("chromosome.svg", device = "tiff", dpi = 600)
#同时也可以使用更简洁的转换函数
svg2tiff("chromosome.svg")
svg2pdf("chromosome.svg")
svg2jpg("chromosome.svg")
svg2png("chromosome.svg")
共线性绘图
代码语言:javascript复制#对物种间的共线性可以进行绘制,首先导入数据。
data(karyotype_dual_comparison, package="RIdeogram")
#karyotype_dual_comparison文件b包含了两个物种/三物种的长度、颜色以及填充色
head(karyotype_dual_comparison)
#> Chr Start End fill species size color
#> 1 I 1 23037639 969696 Grape 12 252525
#> 2 II 1 18779884 969696 Grape 12 252525
#> 3 III 1 19341862 969696 Grape 12 252525
#> 4 IV 1 23867706 969696 Grape 12 252525
#> 5 V 1 25021643 969696 Grape 12 252525
#> 6 VI 1 21508407 0ab276 Grape 12 252525
table(karyotype_dual_comparison$species)
#>
#> Grape Populus
#> 19 19
data(synteny_dual_comparison, package="RIdeogram")
head(synteny_dual_comparison)
#synteny_dual_comparison包含物种共线性的位置信息和线填充色
#> Species_1 Start_1 End_1 Species_2 Start_2 End_2 fill
#> 1 1 12226377 12267836 2 5900307 5827251 cccccc
#> 2 15 5635667 5667377 17 4459512 4393226 cccccc
#> 3 9 7916366 7945659 3 8618518 8486865 cccccc
#> 4 2 8214553 8242202 18 5964233 6027199 cccccc
#> 5 13 2330522 2356593 14 6224069 6138821 cccccc
#> 6 11 10861038 10886821 10 8099058 8011502 cccccc
#绘图
ideogram(karyotype = karyotype_dual_comparison, synteny = synteny_dual_comparison)
convertSVG("chromosome.svg", device = "png")
最多能够绘制3个物种间的共线性图,数据格式和2个物种的是一样的,绘图展示如下。
代码语言:javascript复制data(karyotype_ternary_comparison, package="RIdeogram")
head(karyotype_ternary_comparison)
#> Chr Start End fill species size color
#> 1 NA 1 15980527 fcb06b Amborella 10 fcb06b
#> 2 NA 1 11522362 fcb06b Amborella 10 fcb06b
#> 3 NA 1 11085951 fcb06b Amborella 10 fcb06b
#> 4 NA 1 10537363 fcb06b Amborella 10 fcb06b
#> 5 NA 1 9585472 fcb06b Amborella 10 fcb06b
#> 6 NA 1 9414115 fcb06b Amborella 10 fcb06b
table(karyotype_ternary_comparison$species)
#>
#> Amborella Grape Liriodendron
#> 100 19 19
data(synteny_ternary_comparison, package="RIdeogram")
head(synteny_ternary_comparison)
#> Species_1 Start_2 End_2 Species_2 Start_1 End_1 fill type
#> 1 1 4761181 2609697 1 342802 981451 cccccc 1
#> 2 6 6344197 8074393 1 15387184 16716190 cccccc 1
#> 3 10 6457890 9052487 1 11224953 14959548 cccccc 1
#> 4 13 6318795 1295413 1 20564870 21386271 cccccc 1
#> 5 16 1398101 2884119 1 21108654 22221088 cccccc 1
#> 6 16 1482529 2093625 1 21864494 22364888 cccccc 1
tail(synteny_ternary_comparison, n = 20)
#> Species_1 Start_2 End_2 Species_2 Start_1 End_1 fill type
#> 571 16 19278042 20828694 2 95267449 93334736 cccccc 3
#> 572 12 20546006 22461088 2 22647943 18365764 cccccc 3
#> 573 4 22259262 23453956 2 15068249 17839485 cccccc 3
#> 574 14 22377895 23821929 2 97299880 96033346 cccccc 3
#> 575 6 1538773 2808373 1 91285578 95681546 cccccc 3
#> 576 11 3381792 4954528 1 67689752 75286468 cccccc 3
#> 577 9 4814481 6975840 1 69506847 76015710 cccccc 3
#> 578 10 7091825 9742616 1 19333526 24516133 cccccc 3
#> 579 13 22063957 23402389 1 95843870 92195256 cccccc 3
#> 580 7 679765 1881756 6 7365421 7531534 e41a1c 1
#> 581 7 679765 2752867 13 501561 766473 e41a1c 1
#> 582 7 679765 3012501 8 7406703 8222490 e41a1c 1
#> 583 7 2049369 2942034 14 29350547 34369929 e41a1c 2
#> 584 7 2075095 1538540 10 28985737 30815217 e41a1c 2
#> 585 13 531939 834472 14 28866243 35278211 e41a1c 3
#> 586 8 7427221 8894821 14 28632063 34805893 e41a1c 3
#> 587 6 7567597 7690342 14 32050301 34913801 e41a1c 3
#> 588 13 501561 876423 10 30496700 27874100 e41a1c 3
#> 589 6 7171014 7815454 10 31408837 27660041 e41a1c 3
#> 590 8 5773528 9346871 10 31408837 26585934 e41a1c 3
#绘图
ideogram(karyotype = karyotype_ternary_comparison, synteny = synteny_ternary_comparison)
convertSVG("chromosome.svg", device = "png")
代码语言:javascript复制data(synteny_ternary_comparison_graident, package="RIdeogram")
ideogram(karyotype = karyotype_ternary_comparison, synteny = synteny_ternary_comparison_graident)
library("rsvg")
rsvg_pdf("chromosome.svg", "chromosome.pdf")
小编总结
此R包用起来简单,方便,易调整。在标记全基因组marker时很实用,最惊艳的就是物种间的共线性的绘制,整体来讲是个本不错的R包,有需要的、感兴趣的快去试试吧!
END