如何自定义circos图的配色

1.先来认识一下circos的配色体系

下载安装circos之后,在安装目录下面有一个png图片,上面显示的是circos支持的配色和字体样式。

在绘图过程中如何调用颜色?我用得比较多的是上面这三种,分别是这样的:

#1
##调用一套颜色,这里的3就是每套颜色前面的序号
eg: color  = reds-3-seq
##调用一套颜色中的某一个颜色,这里的1是指该颜色在这一套颜色中排第几个
eg: color  = reds-3-seq-1

#2
##专门给染色体配色的,1是颜色前面的编号
eg: color = chr1

#3
##几种常用颜色,注意编号要加到前面
eg: color = vdblue

其他类型的颜色的使用应该也是类似的。

在上一篇小白的circos学习笔记(一)中,我说我“习惯把所有配置写到一个文件”,在这个文件的最下方是默认配置,一般是不用改的。

<image>
<<include etc/image.conf>>
</image>
<<include etc/colors_fonts_patterns.conf>>
<<include etc/housekeeping.conf>>

其中的etc/colors_fonts_patterns.conf是关于配色的,程序会根据这一行去找配色的文件,etc这个文件夹也是在安装目录下面。按照它说的,去看看这个文件:

<colors>
<<include etc/colors.conf>>
</colors>
<fonts>
<<include etc/fonts.conf>>
</fonts>
<patterns>
<<include etc/patterns.conf>>
</patterns>

从内容来看,这是告诉程序去哪里找配色、字体、模式。接着去看看colors.conf文件,从内容来看,它是定义RGB颜色的主文件,不过从文件末尾来看,它仍然调用了三个现成的配色文件。其中colors.brewer.conf就是前面我在图片上标了1的那些颜色,colors.ucsc.conf就是前面我在图片上标了2的那些染色体的颜色。

vvlpred = 255,82,82
vvlpgreen = 145,255,145
vvlblue = blues-7-seq-1 #这个颜色不是用RGB定义的,它来源于后面调用的'colors.brewer.conf'文件
#等等
# Brewer palette
 <<include colors.brewer.conf>>
# chromosome color map (UCSC) 
<<include colors.ucsc.conf>>
# HSV pure colors 
<<include colors.hsv.conf>>

用一张图片来概括这个过程:

图2

这里需要注意colors.brewer.conf的内容,下文会用到。

png里面的配色样式能满足绝大多数时候的需求,但也有例外。

2.关于circos热图的配色,我的几点浅显认识
场景1

  在画热图的时候,可以先看一下数值和频数的分布图,再考虑颜色是用离散的还是渐变的;如果是渐变的,那是单一渐变色还是成对渐变的,还是多种颜色组合的(比如黄、绿、蓝渐变色);同时还要考虑分成几个色块。考虑好了之后再在png上面找合适的颜色。

  看一下这张图,原本是连续的数据中间少了一部分。比如这是log2(FC),现在将(-1,1)之间的数据全部都不予考虑,剩下的数据做热图来呈现基因表达量上调或下调的程度。设想一下,如果此时还是将这些数据放在一起做图,不管是一个渐变色还是组合渐变色,最终呈现出来的效果图肯定会有颜色“跳跃”,图例上的色差会更明显。

我的想法是将>=1和<=-1的数据分开,分别用一套渐变色,接近-1和1的过渡色可以自己设置,比如浅黄过渡到浅绿,这样就不突兀了。

场景2

  有时还会遇到另一个问题,你的数据是这样的,当值很小时占比很大。很多渐变色第一个色块很浅,这时画出来的图整体就会很浅,一点都不“鲜艳”。要是能直接从渐变色的第二或是第三个颜色开始就好多了。

场景3

也许你还想组合一些色块得到想到的调色板

以下方法可以自定义circos配色,不能保证这个方法很好,但一定管用。
原理就是替换colors.brewer.conf里面的RGB配色。

3.如何自定义circos图的配色

这是我最终自定义的调色板,运用到了热图中,上调的基因偏绿色,下调的基因偏橙色。

做法

1.先在png上找准自己想要截取或是拼接(拼接我没有演示,方法是一样的)的颜色,在colors.brewer.conf上找到它的RGB数值;
2.创建一个tmp文件,根据你想要的颜色集合的整体颜色色块数量给你的颜色集合取一个名字,这个名字在colors.brewer.conf能找到,具体什么名字不重要,重要的是色块数量相同以及能找到;
3.将你找到的RGB和你取的名字对应起来,就像这样:

#tmp文件
#blues-5-seq-1等等都在colors.brewer.conf可以找到
blues-5-seq-1 = 204,235,197
blues-5-seq-2 = 168,221,181
blues-5-seq-3 = 123,204,196
blues-5-seq-4 = 78,179,211
blues-5-seq-5 = 43,140,190


orrd-3-seq-1 = 255,255,212
orrd-3-seq-2 = 254,196,79
orrd-3-seq-3 = 217,95,14

4.打开colors.brewer.conf文件,搜索“blues-5-seq”和“orrd-3-seq”做以下更改:

blues-5-seq = blues-5-seq-(\d+)
blues-5-seq-rev = rev(blues-5-seq-(\d+))
#blues-5-seq-1 = 239,243,255
#blues-5-seq-2 = 189,215,231
#blues-5-seq-3 = 107,174,214
#blues-5-seq-4 = 49,130,189
#blues-5-seq-5 = 8,81,156
blues-5-seq-1 = 204,235,197
blues-5-seq-2 = 168,221,181
blues-5-seq-3 = 123,204,196
blues-5-seq-4 = 78,179,211
blues-5-seq-5 = 43,140,190

......

orrd-3-seq = orrd-3-seq-(\d+)
orrd-3-seq-rev = rev(orrd-3-seq-(\d+))
#orrd-3-seq-1 = 254,232,200
#orrd-3-seq-2 = 253,187,132
#orrd-3-seq-3 = 227,74,51
orrd-3-seq-1 = 255,255,212
orrd-3-seq-2 = 254,196,79
orrd-3-seq-3 = 217,95,14

保存。最好将colors.brewer.conf拷贝一份。
5.正常运行主绘图程序
6.将colors.brewer.conf改回原来的亚子

简单来说,就是“骗”了一下绘图程序。上面第二点强调这个名字(实例中就是blues-5-seq和orrd-3-seq)一定是colors.brewer.conf文件中有的,因为我尝试了仿照图2中colors.brewer.conf文件中定义颜色的格式自己添加一套颜色并取一个类似myblues-9-seq的名字,发现没有起作用。我的猜测是colors.brewer.conf文件中颜色名不可更改(颜色名集合不变或是颜色名有规律,而这个规律我恰好不知道)


最后再分享一个关于色块与数值对应关系的小知识点,比如我有一堆[1,10]的连续的数值,画热图的时候,选了一个9个色块的渐变色,数值与色块的对应关系是:

[1,2)  颜色1
[2,3) 颜色2
[3,4) 颜色3
......
[8,9) 颜色8
[9,10] 颜色9

“左闭右开”,画图例的时候也许用得到。

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

推荐阅读更多精彩内容