R语言绘制Venn图比较方便,但是有很多细节需要注意,不然特别容易报错。
基本的语法和参数
VennDiagram::venn.diagram(
x = venn,filename = NULL,
#filename = "./figure_final/tif/Venn.tiff",
resolution = 300,
disable.logging = FALSE,
col = NA,
fill = palette,
cat.col = palette,
cat.cex = 1,
cat.dist = -0.15,
rotation.degree = 0, main.cex = 1,
cex = 1, alpha = 0.5, reverse = TRUE
)
x是输入数据
filename可选,如果filename填了文件路径的话就直接输出一个图片文件,如果filename填NULL的话就可以赋值给一个变量,后面再输出。
fill和cat.col的数量应当与x的元素数量保持一致
细节一
输入数据(也就是x)应当是一个list。而且list的名字不能缺,必须为这个list的每个元素命名。
names(venn) <- c("TCGA-Up","TCGA-Down","CON-Up","CON-Down")
如果没有名字的话,作图的时候会报错:
Error in VennDiagram::draw.quad.venn(area1 = length(A), area2 = length(B), :
Unexpected parameter length for "category"
细节二
想输出PDF文件的话,不能直接print。我们可以看一下venn.diagram输出的是什么类型的对象
> p <- VennDiagram::venn.diagram(
+ x = venn,filename = NULL,
+ #filename = "./figure_final/tif/Venn.tiff",
+ resolution = 300,
+ disable.logging = FALSE,
+ col = NA,
+ fill = palette,
+ cat.col = palette,
+ cat.cex = 1,
+ cat.dist = -0.15,
+ rotation.degree = 0, main.cex = 1,
+ cex = 1, alpha = 0.5, reverse = TRUE
+ )
> class(p)
[1] "gList"
如果直接输出这个p的话,会变成这样:
> print(p)
(polygon[GRID.polygon.1313], polygon[GRID.polygon.1314], polygon[GRID.polygon.1315], polygon[GRID.polygon.1316], polygon[GRID.polygon.1317], polygon[GRID.polygon.1318], polygon[GRID.polygon.1319], polygon[GRID.polygon.1320], text[GRID.text.1321], text[GRID.text.1322], text[GRID.text.1323], text[GRID.text.1324], text[GRID.text.1325], text[GRID.text.1326], text[GRID.text.1327], text[GRID.text.1328], text[GRID.text.1329], text[GRID.text.1330], text[GRID.text.1331], text[GRID.text.1332], text[GRID.text.1333], text[GRID.text.1334], text[GRID.text.1335], text[GRID.text.1336], text[GRID.text.1337], text[GRID.text.1338], text[GRID.text.1339])
所以在输出成PDF之前,需要先转换一下对象的类型:
> p = ggplotify::as.ggplot(cowplot::as_grob(p))
> class(p)
[1] "gg" "ggplot"
这样就可以正常print并且输出到PDF里了。
网友评论