上一篇文章VCF文件的正确打开方式 介绍了如何利用python模块处理VCF文件,当时为什么要写这篇文章呢?主要是因为工作中需要比较两个VCF文件的共有和特有的突变位点,必然要做的事情就是VCF文件的解析,所以才有了上一篇文章。现在比较结果出来了,结果是一个表格,WTF,表格,也太low了吧,最主要是不直观啊!所以决定继续完善脚本,将输出的结果顺便画个图,直观明了。
你想要的当然是代码咯!
代码之两组数据:
码之三组数据:
结果示例图
古人云,授之以鱼不如授之以渔。代码虽然很简单,我们还是有必要深入说一下具体的做法。
python画图我们首先想到的是matplotlib库,强大的画图库,python当然也有很多其他的画图库,但大部分都是依赖matplotlib的。然而,matplotlib库本身并不能绘制VENN图,需要借助第三方库---matplotlib_venn,当然matplotlib_venn库也是依赖matplotlib库的。我们分别利用matplotlib_venn库的venn2和venn3函数来绘制两组数据和三组数据的VENN图。venn2和venn3的用法几乎一样,下面我们以venn2为例说一说韦恩图是怎么画出来的。
venn2(subsets,set_labels=('A','B'),set_colors=('r','g'),alpha=0.4,normalize_to=1.0,ax=None,subset_label_formatter=None)
venn2主要有以上几个参数,但最常用的是前三个:
1. subsets:也是必须的参数,即绘图所需的数据集,subsets接受三种格式的输入数据:
1.1 一个list,包含两个set元素,set中包含两个数据集集体的数据,即上述代码使用的方法;
1.2 一个三个key字典,{'10': 1, '01': 1, '11': 2},key是两个字符的二进制编码方式,所以三个key必须是“10”,“01”和“11”,value分别代表对应区域的大小;
1.3 一个包含三个数字的list,三个数字分别代表图形三部分的大小。
推荐用第一种方法,给原始数据即可,不需要计算数据集的大小。
2. set_labels
设置数据的标签,即图形中两组数据的名称
3. set_colors
设置图形的颜色
以上就是matplotlib_venn库的venn2模块的简单介绍。到此重点讲完,下面说几点细节:
1. 图形加Title,图片设置大小等功能是由matplotlib库实现的而不是matplotlib_venn本身。
2. 实际工作中,我们往往希望把画出来的图片保存成文件,而不是直接展示出来,这是plt.show()就不合适了,需要改成plt.savefig('test.png')才行(test.png为要输出的图片名)。
3. matplotlib_venn库只能实现两组或者三组数据的韦恩图的绘制,更多数据集暂时不支持(此处,尴尬而不失优雅的微笑)。
欢迎关注