karyoploteR绘图

karyoploteR

1、安装
>if (!requireNamespace("BiocManager", quiet = TRUE))
+  install.packages("BiocManager")

>BiocManager::install("IdeoViz")
>library(karyoploteR)
2、绘图

(1)画基因组

> kp <- plotKaryotype(genome='hg19')

hg19

画基因组的指定染色体

> kp <- plotKaryotype(genome = "hg19", chromosomes=c("chr10", "chr12", "chr2"))

image.png

(2)在染色体上映射标记
先伪造一个Marker的文件

> marker <- read.table("marker.txt",header = T)  # txt文件最后必须有一空行,否则报错
> print(marker)
   chr      pos label
1 chr1 11111111  pos1
2 chr2 22222222  pos2
3 chr3 33333333  pos3

再画好基因组/染色体

> kp <- plotKaryotype(genome='hg19', chromosomes=c("chr1", "ch2", "chr3"))

也可以染色体标个尺度

> kpAddBaseNumbers(kp)

image.png

把marker标到它该去的地方

> kpPlotMarkers(kp, chr=marker$chr, x=marker$pos, labels=marker$label)

image.png

试试不标上labels

> kpPlotMarkers(kp, chr=marker$chr, x=marker$pos, labels=' ')

image.png

给这线上个色

> kpPlotMarkers(kp, chr=marker$chr, x=marker$pos, labels=' ',  line.color = "#FFAA22")

image.png

还可以给label上个色儿

> kpPlotMarkers(kp, chr=marker$chr, x=marker$pos, labels=marker$label, label.color = "#22AAFF")

image.png

竖着看好挤呀,给label文本转个方向,水平方向

> kpPlotMarkers(kp, chr=marker$chr, x=marker$pos, labels=marker$label, text.orientation = "horizontal")

image.png

https://bernatgel.github.io/karyoploter_tutorial//Tutorial/PlotMarkers/PlotMarkers.html
(3)在染色体上映射区域
一样先伪造一个region的文件

> region <- read.table("region.txt",header = T)  # txt文件最后必须有一空行,否则报错
> print(region)
   chr    start      end
1 chr1 11111111 22222222
2 chr1 55555555 66666666
3 chr2 12345678 22345678
4 chr3 61325321 61325321

区域画到染色体上

> kp <- plotKaryotype(genome='hg19', chromosomes=c("chr1", "chr2", "chr3"))
> kpPlotRegions(kp, data=region)

image.png

给区域上色

> kpPlotRegions(kp, data=region, col="#FFAA22")

image.png

给区域的边框上色

> kpPlotRegions(kp, data=region, col="#FFEECC", border="#FFCCAA")

image.png

这个的实际作用不是把长条条变小,而是分割成两份用白色填充的

> kpPlotRegions(kp, region, col="blue",border = "white",r0 = 0, r1 = 1,num.layers = 5)

image.png

(4)在染色体上画个点吧
继续伪造数据,,,

> point <- read.table("point.txt", header=T)
> print(point)
   chr      pos value
1 chr1 11111111   0.3
2 chr1 55555555   0.4
3 chr2 12345678   0.5
4 chr3 61325321   0.2

画上去画上去

> kp <- plotKaryotype(genome='hg19', chromosomes=c("chr1", "chr2", "chr3"))
> kpPoints(kp, chr=point$chr, x=point$pos, y=point$value)

image.png

加个色儿,再加个色儿

> kpPoints(kp, chr=point$chr, x=point$pos, y=point$value, col="#FFCCAA")

image.png

变成小圈圈~

> kpPoints(kp, chr=point$chr, x=point$pos, y=point$value, pch=1)

image.png

pch=不同的数字图案都不一样哦,极限是多少我也不知道,自己试试嘛

> kpPoints(kp, chr=point$chr, x=point$pos, y=point$value, pch=1:23)

image.png

21-25可以指定边界颜色(col=)和填充色(bg=)
变成大黑圈

> kpPoints(kp, chr=point$chr, x=point$pos, y=point$value, cex=2)

image.png

呀达,组合起来这是什么神奇的反应

> kpPoints(kp, chr=point$chr, x=point$pos, y=point$value, pch=1, cex=2)

image.png

(5)画个折线图
老样子

> line <- read.table("line.txt", header=T)
> print(line)
   chr      pos value
1 chr1 11111111   0.3
2 chr1 22222222   0.4
3 chr1 33333333   0.1
4 chr1 55555555   0.6
5 chr1 66666666   0.2
6 chr1 77777777   0.3

画上去!!!

> kp <- plotKaryotype(chromosomes="chr1")
> kpLines(kp, chr=line$chr, x=line$pos, y=line$value)  # col="#440000" 还是一样能搞颜色

image.png

折线下面是阴影

> kp <- plotKaryotype(chromosomes="chr1")
> kpArea(kp, chr=line$chr, x=line$pos, y=line$value)

image.png

还要有框框

kpAxis(kp, ymin = 0, ymax=1)

image.png

搞个标准线,base.y

> kp <- plotKaryotype(chromosomes="chr1")
> kpArea(kp, chr=line$chr, x=line$pos, y=line$value, base.y=0.3)
> kpAxis(kp, ymin = 0, ymax=1)

image.png

col="gold", border="red" 都可以安排上
https://bernatgel.github.io/karyoploter_tutorial//Tutorial/Area/Area.html

(5)某点写文本
就用上面的数据line

> kp <- plotKaryotype(chromosomes="chr1")
> kpText(kp, chr=line$chr, x=line$pos, y=line$value, labels="p")
image.png

(6)超级组合技

> line <- read.table("line.txt", header=T)
> print(line)
   chr      pos value
1 chr1 11111111   0.3
2 chr1 22222222   0.4
3 chr1 33333333   0.1
4 chr1 55555555   0.6
5 chr1 66666666   0.2
6 chr1 77777777   0.3

> kp <- plotKaryotype(chromosomes="chr1")
> kpPoints(kp, chr=line$chr, x=line$pos, y=line$value)
> kpText(kp, chr=line$chr, x=line$pos+0.1, y=line$value+0.1, labels="p")

image.png

看看看看,文本的完美融合,要是是有 labels 这一项的数据就好了

> kp <- plotKaryotype(chromosomes="chr1")
> kpLines(kp, chr=line$chr, x=line$pos, y=line$value)
> kpPoints(kp, chr=line$chr, x=line$pos, y=line$value)
> kpText(kp, chr=line$chr, x=line$pos, y=line$value+0.2, labels="p")

image.png

靠谱
(7)添加图例

# 添加图例
kp <- plotKaryotype(genome="hg19", plot.type=2, labels.plotter = NULL)
legend("bottomright",
legend=c("a","b","c","d","e","f","g"),
col=c("black","black","#999999","blue","yellow","orange","red"),
pch=c(NA,19,NA,NA,NA,NA,NA),
lty=1,lwd=1,cex=0.6)
image.png

(8)别的格式plot.type=4

pp <- getDefaultPlotParams(plot.type=4) # 查看默认参数设置
pp$ideogramlateralmargin <- 0  # 修改某一个参数  两个染色体中间就没有了缝隙
kp <- plotKaryotype(genome="hg19", plot.type=4, cytobands = GRanges(), labels.plotter = NULL,  plot.params=pp)
kpDataBackground(kp, col=c("#E1EAF2", NA), r0=-0.05, r1=0.95) # 先加背景色,否则会压住轴线
kpAxis(kp, ymax = 5, ymin=0, numticks=6, r0=-0.05, r1=0.95, cex=0.5) # 添加轴
kpAbline(kp, h=c(0.2, 0.4, 0.6, 0.8, 1), col="black", lwd=0.5, r0=-0.05, r1=0.95) #添加水平线
kpAddChromosomeNames(kp, chr.names=c(1:22, 'X', 'Y'), cex=0.5) # 加染色体名

image.png

为什么r0=-0.05呢? 因为某些我也不知道的默认设置的原因,上面面板和下面染色体中间就是0.05,为使中间没有缝隙,只能让它降0.05,起始要去改那个默认设置也行,就是没去试
image.png

(9)plot.type=1、2、3、4、5、6、7
都可以去试试
(10)初学R,做个笔记

> getwd()  当前所在目录
> setwd("D:\\Rwork")  切换到别的目录
>dev.new()   新建图形窗口
>dev.set(3)   切换到之前编号3画图窗口

剩下的先不写了
官方教程在这里

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,287评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,346评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,277评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,132评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,147评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,106评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,019评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,862评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,301评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,521评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,682评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,405评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,996评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,651评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,803评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,674评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,563评论 2 352

推荐阅读更多精彩内容