【发布时间】:2017-04-10 13:14:05
【问题描述】:
我正在使用库VennDiagram 来绘制维恩图。但是这个函数没有添加图例的功能,并且集合名称显示在集合本身上或附近。
library(VennDiagram)
x <- list(c(1,2,3,4,5),c(4,5,6,7,8,9,10))
venn.diagram(x,filename="test.png",fill=c("#80b1d3","#b3de69"),
category.names=c("A","B"),height=500,width=500,res=150)
对于许多集合,过度绘制名称是一个问题,我希望有一个图例。该功能建立在网格图形上,我不知道网格绘图是如何工作的。但是,无论如何我都在尝试添加一个图例。
查看 venn.diagram 函数,我发现最终绘制的对象是 grob.list,它是一个 gList 对象,它使用 grid.draw() 绘制。
png(filename = filename, height = height, width = width,
units = units, res = resolution)
grid.draw(grob.list)
dev.off()
我发现我可以通过使用下面的代码修改venn.diagram 函数来创建图例。
cols <- c("#80b1d3","#b3de69")
lg <- legendGrob(labels=category.names, pch=rep(19,length(category.names)),
gp=gpar(col=cols, fill="gray"),byrow=TRUE)
绘制对象lg
png(filename = filename, height = height, width = width,
units = units, res = resolution)
grid.draw(lg)
dev.off()
获得传奇
如何以可用的方式将维恩图 (gList) 和图例 (gTree,grob) 放在一起?我希望得到类似基本情节风格的东西:
或 ggplot 样式
【问题讨论】: