[R] a minor bug in "venn" from gplots?

Tao Shi shitao at hotmail.com
Thu Oct 29 18:06:22 CET 2009



Hi list,

I found this one when I was trying to output the Venn diagram to a .pdf file.  When there are 4 sets of groups to draw, the .pdf file automatically has 3 pages and the figure only appears on the 3rd page in the .pdf file with the first 2 pages being blank.  Try the following: (I'm using R-2.9.0 on WinXP, gplots 2.7.1).  gplots 2.7.3 has the same problem.

###==========================
pdf("test.pdf")
A<- 1:20

B<- 1:20

C<- 2:20

D<- 3:21

input<-list(A,B,C,D)

venn(input)

dev.off()
###==========================

By looking at the code of "drawVennDiagram", I think the problem comes from the fact there are one grid.newpage() call and two plot function calls when numCircles==4 (see below).  I wonder the grid.newpage() and the second plot call are necessary?

Thanks a lot.

...Tao


##=========================================================================
........
    else if (4 <= numCircles && numCircles <= 5 && !simplify) {
        grid.newpage()                                     <<<<<<<<<<<<<<<<===============================
        relocate_elp <- function(e, alpha, x, y) {
            phi = (alpha/180) * pi
            xr = e[, 1] * cos(phi) + e[, 2] * sin(phi)
            yr = -e[, 1] * sin(phi) + e[, 2] * cos(phi)
            xr = x + xr
            yr = y + yr
            return(cbind(xr, yr))
        }
        lab <- function(identifier, data, showLabel = showSetLogicLabel) {
            r <- data[identifier, 1]
            if (showLabel) {
                return(paste(identifier, r, sep = "\n"))
            }
            else {
                return(r)
            }
        }
        plot(c(0, 400), c(0, 400), type = "n", axes = F, ylab = "",   <<<<<<<<<<<<<<============
            xlab = "")
        if (4 == numCircles) {
            elps = cbind(162 * cos(seq(0, 2 * pi, len = 1000)), 
                108 * sin(seq(0, 2 * pi, len = 1000)))
            plot(c(0, 400), c(0, 400), type = "n", axes = F,     <<<<<<<<<<<<<<<<<<===============
                ylab = "", xlab = "")
            polygon(relocate_elp(elps, 45, 130, 170))
            polygon(relocate_elp(elps, 45, 200, 200))

...........
###===============================================================================

 		 	   		  
_________________________________________________________________
[[elided Hotmail spam]]

D24727::T:WLMTAGL:ON:WL:en-US:WWL_WIN_myidea:102009



More information about the R-help mailing list