2

我一直在研究 GNU R 中的维恩图。我尝试过使用包 venneuler 和 VennDiagram。我发现 VennDiagram 有更精细的控制,但似乎缺乏填写所有细节的文档。我能找到的最接近的是这个 PPT 文件。 http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3041657/bin/1471-2105-12-35-S4.PPT我从网址中找到的:http://www.ncbi.nlm。 nih.gov/pmc/articles/PMC3041657/

这是我使用 VennDiagram 的问题。

对于代码

require(VennDiagram)
venn.diagram(list(B = 1:2000, A = 200:400),fill = c("yellow", "blue"), 
alpha = c(0.8, 0.8), cex =1.5, cat.pos=0, cat.fontface = 4,
lty = 1, fontfamily =3, filename = "test001.jpeg");

(我这里有一张图片,但由于我是新人,所以我无权发布图片。请从上面的代码生成图片。)

我可以制作一个子集(因此一个圆圈内有一个圆圈)。但我没有找到一种方法来执行以下操作:

  1. 使 BC 显示为等于 B^C。不,文字“B^C”不起作用。我认为有一种方法可以重新标记不同属性中的集合,但我还没有看到这样做的方法。
  2. 将 B^C 和 A^C 的标签放置在集合内,而不是当前显示的外部。我试过 cat.pos="inner" 但这不是一个有效的属性。我还尝试了 cat.pos=c(0,0) 希望我可以将它作为 X,Y 提供,其中 X 和 Y 来自圆心,但它没有产生任何不同的结果。

感谢 DWin,这是完成我的练习图的代码。假设 A ⊂ B。证明 B c ⊂ A c

require(VennDiagram)
plot.new()
venn.plot <- venn.diagram(
x = list(B = 1:200, A = 20:40), category.names= expression(B, A), 
          fill = c("yellow", "blue"), alpha = c(0.8, 0.8), cex =1.5, 
          cat.pos=0, cat.dist=c(-.1, -.1),  filename = NULL) ;
grid.draw(venn.plot); # grid graphic requires explicit print or draw operation
grid.text(expression(B^c),x=0.2,y=0.95)
grid.text(expression(A^c),x=0.16,y=0.95)
grid.text(expression(A^c),x=0.16,y=0.75)
4

1 回答 1

1

也许是这样的:

 venn.diagram(list(B = 1:200, A = 20:40), category.names= expression(B^c, A), 
            fill = c("yellow", "blue"), alpha = c(0.8, 0.8), cex =1.5, cat.pos=0, 
            cat.dist=c(.1, -.1), cat.fontface = 4,lty = 1, fontfamily =3,
            filename = "test001.jpeg")

要获取圆圈内的标签,请为“cat.dist”提供负值。诀窍是参考点在 12 点钟方向是距边界的径向距离,而不是距中心的径向距离。文档说 category.names 参数是用 plotmath 语法解释的。plotmath 中的上标操作是使用“^”运算符完成的。我在这里将 A" 移到里面,而将 B^c 留在外面,表明它是被标记的 B 圆之外的区域。(我还通过缩小示例来改进绘图时间。)我尝试绘制三个标签但这似乎不是“一揽子计划的一部分”。

在此处输入图像描述

grid.text()这是您可以在屏幕设备上进行注释的一种方式:

plot.new()
venn.plot <- venn.diagram(
 x = list(B = 1:200, A = 20:40), category.names= expression(B^c, A), 
          fill = c("yellow", "blue"), alpha = c(0.8, 0.8), cex =1.5, 
          cat.pos=0, cat.dist=c(.05, -.1),  filename = NULL) ;
 grid.draw(venn.plot); # grid graphic requires explicit print or draw operation
 grid.text("B",x=0.8)
# then you can save to file
于 2012-02-20T21:05:56.043 回答