0

我正在使用Vennerable 包 来绘制维恩图。

library(Vennerable)

A <- c("aa","ab","ac","a1")
B <- c("bb","ab","bc")
C <- c("ac","bc","cc","aa")
L <- list(A=A,B=B,C=C)
V <- Venn(L)

我知道我可以操纵“元素”的字体大小

gp <- VennThemes(compute.Venn(V))
gp$FaceText <- lapply(gp$FaceText,function(x) {x$fontsize<-10; return(x)})
plot(V ,doWeights=FALSE,show=list(FaceText="elements"),gp=gp)

不幸的是,元素的标签文本被放入没有空格或逗号的集合中(“aaac”而不是“aa,ac”)。见下图。有什么办法可以改变这个吗?

此外,如果我有很多项目(不止 2 个,如下面的情况(aa ac)),我如何在元素的标签中引入换行符?我相信像这样的函数

linebreak <- function(x,...){
  gsub('(.{1,15})(\\s|$)', '\\1\n', x)} 

有帮助。但是我如何将它集成到 Vennerable 情节代码中?

不幸的是,包的文档中没有任何相关信息。非常感谢。 在此处输入图像描述

4

1 回答 1

0

如果在名称中添加“\n”,则换行符会出现在文本标签中:

L <- list('A\nB'=A,'B\nC'=B,'C\nD'=C)
V <- Venn(L)
gp <- VennThemes(compute.Venn(V))
gp$FaceText <- lapply(gp$FaceText,function(x) {x$fontsize<-10; return(x)})
plot(V ,doWeights=FALSE,show=list(FaceText="elements"),gp=gp)

我无法让您的linebreak功能按照我想象的您预期的方式工作,但没有针对它的测试套件。

于 2014-09-22T06:23:08.950 回答