I'm facing this little layout problem here with this 3-vector list venn diagram. I specified cat.pos = c(0, 0, 0), cat.dist = c(0.1, 0.1, 0.1) to have all 3 labels at noon above their respective area and at the same distance but I got the 3rd 1 step more above.. It is also farther when no cat.dist vector is passed to the function.
# Get gene lists to do Venn diagram
ids_3883_pvsUNR <- c(paste0("gene",c(1:66)))
ids_3883_pvsCRSP <- c(paste0("gene",c(67:126)))
ids_3884 <- c(paste0("gene",c(1:30,67:85,1001:4054)))
head(ids_3883_pvsUNR)
length(ids_3883_pvsUNR)
length(ids_3883_pvsCRSP)
length(ids_3884)
#
geneLS <- list(ids_3883_pvsUNR, ids_3883_pvsCRSP, ids_3884)
# We can rename our list vectors
names(geneLS) <- c("Set_1_3883_pvsUNR","Set_1_3883_pvsCRSP", "Set_2_3884RUV")
# Now we can plot a Venn diagram with the VennDiagram R package, as follows:
require("VennDiagram")
VENN.LIST <- geneLS
labels <- c("Set_1_3883\nPat 1,2 vs UNR","Set_1_3883\nPat 1,2 vs 3 CRSP", "Set_2_3884RUV\nPat 3 vs 3 CRSP")
venn.plot <- venn.diagram(VENN.LIST , NULL, fill=c("darkmagenta", "darkblue", "grey"), alpha=c(0.5,0.5,0.5), cex = 2, cat.fontface=4, cat.pos = c(0, 0, 0), cat.dist = c(0.1, 0.1, 0.1), category.names=labels, main="Set_1_May_3883 (P vs UNR or CRSP) vs Set_2_May_3884_RUVcorrected")
# To plot the venn diagram we will use the grid.draw() function to plot the venn diagram
dev.off()
grid.draw(venn.plot)
Does somebody know what is happening here? Thanks for your feedback! Daniel
Try the functions of the ggVennDiagram
or ggvenn
package.
Here are the data
genes <- paste("gene",1:3180,sep="")
x <- list(
`Set_1_3883\n Pat 1,2 vs UNR` = genes[1:66],
`Set_1_3883\n Pat 1,2 vs 3 CRSP` = genes[37:3139],
`Set_2_3884RUV\n Pat 3 vs 3 CRSP` = genes[3121:3180]
)
And now the graph
library(ggVennDiagram)
ggVennDiagram(x, label_alpha = 0)+
scale_fill_gradient(low="gray",high = "blue")
And with the ggvenn
package
library(ggvenn)
ggvenn(
x,
fill_color = c("plum1", "blueviolet", "gray"),
stroke_size = 0.5, set_name_size = 4
)
In both cases they are ggplots so you will have much better control over them.