Venn图,R vs python
张宇亮 / 2017-09-19
下午在用R画Venn图的时候学到了一些画Venn图的技巧,记个笔记mark一下,方便之后查阅。起因是师姐要把一个韦恩图转化成面积权重的(area-weighted1),原图如下:
记得之前做过Venn图,但和师姐的要求可能有少许不同,结果发现原来的解决方法也就是R里的VennDiagram并不能帮上什么忙,R倒是有一个这样的包Vennerable用来解决这样的问题,但是画出来的图实在是太丑了,还不能自己调。
#绘图代码
Vcombo <- Venn(SetNames = c("test_1", "test_2", "test_3"),Weight = c(0, 2037,382,1409,333,556,120,4774))
plot(Vcombo)
同时找到了绘制Venn图的Python版本matplotlib-venn。开发这个Python包的大大发现R里的绘图包并不能满足他的需求,于是自己开发了一个Python包,顺便造福我等学渣。这个包绘制的图形看起来就好看多了:
#绘图代码
from matplotlib import pyplot as plt
import numpy as np
from matplotlib_venn import venn3, venn3_circles
plt.figure(figsize=(4,4))
v = venn3(subsets=(2307,382,1409,333,556,120,4774),set_labels = ('A', 'B', 'C'))
plt.show()
当然,你要是说把R里的图导出为矢量图,用Illustrator修改一番也是可以的。
顺便插播一个前几天升级R以及安装R包遇到的bug,之前这两个坑都踩过T_T:
- 用installr包更新R时,要把R的工作目录切换到原来安装R的文件夹的上一级,否则不会自动移动旧版本R已经安装的包到新安装的R的文件夹下。
- 安装R包时如果安装失败了看看是不是电脑管家等其他杀毒软件没有退出,一般退出后即可正常安装,你不退出管理员权限都不好使。
- 这个专业的术语帮助我Google到了正确的解决方法 ↩
