我一直在使用GNU R中的Venn Diagrams。我尝试过使用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");
(我这里有一张图片,但由于我是新手,我无权发布图片。请从上面的代码生成图片。)
我可以制作一个子集(因此是一个圆圈内的圆圈)。但我没有找到办法做到以下几点:
感谢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)
答案 0 :(得分: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