簡體   English   中英

使用VennDiagram包在R中縮放三維維恩圖

[英]scaling triple Venn diagram in R with VennDiagram package

有誰知道如何讓R包VennDiagram根據設定的大小來縮放包含3個相交集的維恩圖的圓圈?

我可以通過venneular包實現這種擴展,但我發現與VennDiagram相比,其他圖形選項有點受限。

VennDiagram包文檔建議將參數'scaled'設置為TRUE應該可以做到這一點,但我發現這會產生3個相同大小的圓。

包文檔確實以密碼形式表明縮放參數可能僅適用於某些圖:

?draw.triple.venn

揭示了:

scaled:“布爾值,指示是否根據設置的尺寸縮放某些歐拉圖中的圓形尺寸”

?venn.diagram

#Argument Venn Sizes    Class    Description
#scaled    2, 3         logical  Enable scaling for two-set and certain three-set Euler diagrams.

我的代碼的玩具示例:

require(VennDiagram)

venn.plot <- draw.triple.venn(
    area1 = 70,
    area2 = 250,
    area3 = 500,
    n12 = 30,
    n23 = 60,
    n13 = 10,
    n123 = 5,
    category = c("C1", "C2", "C3"),
    fill = c("blue", "red", "green"),
    scaled=TRUE)

tiff(filename = "test.tiff", compression = "none",type = "quartz",antialias = "none")
grid.draw(venn.plot)
dev.off()

類似地,使用'venn.diagram'函數的代碼不會產生所需的縮放:

venn.diagram(x=list(A=c(1:15,16:20), B=c(6:15,21:30,100:150), C=c(11:30,200:300)),
         filename="test.tiff",
         fill = c("blue", "yellow", "red"), scaled=TRUE)

謝謝v.much

吉姆

所以回答我自己的問題:對於某些配置,在數學上不可能使用圓形創建縮放的3向Venn。

由於可能誤導數據的可視化表示,因此禁用三組維恩圖的一般縮放

請嘗試使用以下兩個工具,

http://bioinformatics.psb.ugent.be/webtools/Venn/ http://bioinfogp.cnb.csic.es/tools/venny/index.html

對於您的問題,請閱讀以下注釋:

關鍵是在draw.triple.venn中設置overrideTriple

如果euler.d == TRUE,則繪制19個特殊情況的Euler圖。 某些Euler圖在適當的情況下使用特定於兩組維恩圖的縮放,sep.dist或偏移參數。 該功能默認將三個圓圈放置成三角形排列,頂部有兩組,下面有一組。 圓圈以順時針方式對應於area1,area2和area3,左上角為area1。 NB由於可能誤導數據的可視化表示,因此禁用三組維恩圖的一般縮放。 要重新啟用,請將任何值分配給變量overrideTriple

http://cran.r-project.org/web/packages/VennDiagram/VennDiagram.pdf

我使用Vennerable代替。 將數據讀入Venn對象有點復雜,但它會生成加權/縮放的三組圖表+圖形選項。

如果您考慮采用不同的方法,我們開發了具有其他形狀的nVennR封裝來傳達區域尺寸。

mySVG <- plotVenn(list(A=c(1:15,16:20)), list(B=c(6:15,21:30,100:150)), list(C=c(11:30,200:300)))

准比例維恩圖

這個R包是初步的,輸出控制的選項非常有限。 我們正在開發一個新版本,我們正在收到反饋意見。 還有一個包含更多選項的Web版本 ,並且可以使用Inkscape等外部工具始終編輯輸出。

我的解決方案

overrideTriple=T
draw.triple.venn(9, 20, 30, 2, 10, 3, 2, category =
               rep("", 3), rotation = 1, reverse = FALSE, euler.d = F, scaled = F)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM