2012-01-03 150 views
46

我有以下類型的計數數據。維恩圖比例和半透明的顏色陰影

A 450 
B 1800 
A and B both 230 

我想開發豐富多彩的(可能在交叉點半透明度)像下面維恩圖。

enter image description here

注:這個數字是在PowerPoint中繪製一個例子的手,這是不按比例。

+0

拉昇相同的R-包閃亮的應用爲什麼不'庫( 「SOS」)開始; findFn(「venn」)'看看你需要多長時間? – 2012-01-03 15:52:03

+0

或使用* venneuler *包裝它 – 2012-01-03 17:30:44

回答

45

這是一篇文章,討論Venn diagram from list of clusters and co-occurring factors

對於簡單的解決方案使用的軟件包venneuler

require(venneuler) 
v <- venneuler(c(A=450, B=1800, "A&B"=230)) 
plot(v) 

enter image description here

更先進的和定製的解決方案取包VennDiagram

+0

是否有可能以黑色顯示裝訂線? thnaks的解決方案.. – jon 2012-01-03 17:19:43

+0

@約翰:良好的形式是第一次仔細閱讀VennDiagram和venneuler的幫助文件,然後才詢問格式或其他選項。 – 2012-01-03 17:23:38

+0

@John雖然'venneuler'沒有「邊界」參數,你可以根據'venneuler'對象的值(你有中心和直徑)繪製圓圈,這將會產生一個邊界。我懷疑這在功能上也不難實現。 – 2012-01-03 17:25:29

39

基於Geek On Acid第二個建議(再次感謝)的第二個答案,我也能夠解決線路問題。如果這是與其他Google相關的相關信息,我會發布!

require(VennDiagram) 
    venn.diagram(list(B = 1:1800, A = 1571:2020),fill = c("red", "green"), 
    alpha = c(0.5, 0.5), cex = 2,cat.fontface = 4,lty =2, fontfamily =3, 
    filename = "trial2.emf"); 

enter image description here

+0

嗨,我正在使用'vennDiagram(sub,cex = ..,lwd = 2, circle.col = ...)'當我按照你提到的方法嘗試'fill'時,它會提示:1:''fill'不是圖形參數'這是vennDiagram版本的問題嗎?在這種情況下你有權利「填補」嗎?非常感謝 – PGreen 2013-03-12 10:39:23

+0

@PGreen我剛剛在R 2.15.2中試用了最新版本的vennDiagram,適用於我...... – jon 2013-03-12 12:24:11

+3

@PGreen我懷疑問題在於您使用的是limma軟件包中的vennDiagram,而jon使用的是venn。來自vennDiagram包的圖表。 vennDiagram沒有填充參數,這就是您遇到錯誤的原因。 – sage88 2013-08-18 06:55:35

11

儘管這並不完全回答你的問題。我認爲這對其他希望繪製維恩圖的人有用。 人們可以使用維恩()函數從gplots包: http://www.inside-r.org/packages/cran/gplots/docs/venn

## modified slightly from the example given in the documentation 
## Example using a list of item names belonging to the 
## specified group. 
## 
require(gplots) 
## construct some fake gene names.. 
oneName <- function() paste(sample(LETTERS,5,replace=TRUE),collapse="") 
geneNames <- replicate(1000, oneName()) 

## 
GroupA <- sample(geneNames, 400, replace=FALSE) 
GroupB <- sample(geneNames, 750, replace=FALSE) 
GroupC <- sample(geneNames, 250, replace=FALSE) 
GroupD <- sample(geneNames, 300, replace=FALSE) 

venn(list(GrpA=GroupA,GrpB=GroupB,GrpC=GroupC,GrpD=GroupD)) 

enter image description here 後來,我只需要添加使用Illustrator的顏色和透明度。 enter image description here

+1

嗨!您是否介意使用Illustrator來闡述您的意思?你的意思是Adobe Illustrator,還是有一種方法可以用R來實現上面的圖表? – 2014-12-04 17:57:42

+1

對不起我的壞!我的意思是使用Adobe Illustrator – ktyagi 2015-02-18 16:34:57

3

我知道OP詢問R中的解決方案,但我想指出一個名爲BioVenn的基於Web的解決方案。它佔用元件3所列出,並繪製的文氏圖,使得每個表面成比例的元素數 - 像這樣的:

enter image description here

在該圖中我已經手動改變(通過PhotoShop中)的因爲我不喜歡BioVenn選擇的位置,因此放置了這些數字。但你可以選擇不要有數字。

理論上與BioVenn一起使用的列表應該由基因ID組成,但實際上並不重要 - 列表只需包含字符串。

+2

「在這個圖表中,我手動(通過PhotoShop)更改了數字的位置,因爲我不喜歡BioVenn選擇的位置,但是您可以選擇不使用數字。」實際上,在BioVenn中,您可以將數字拖放到任何想要的位置。沒有PhotoShop需要:-) – 2015-11-02 12:20:58

19

我最近發佈了一個新的R程序包eulerr,它可以滿足您的需求。它與venneuler非常相似,但沒有不一致。

library(eulerr) 
fit <- euler(c(A = 450, B = 1800, "A&B" = 230)) 
plot(fit) 

eulerplot

或者你也可以在eulerr.co

shiny-euler

+0

動畫閃亮的應用程序爲我密封 – Megatron 2017-09-13 19:19:08

+1

優秀的軟件包。小缺陷imho是默認的配色方案,它使用白色作爲第一組和背景,因此缺乏對比度。 此外,所提供的代碼片段與最近的R /軟件包版本沒有給出相同的結果。 – 2018-03-06 10:22:27

+0

謝謝。我更新了代碼片段和它生成的數字。我會不同意你的配色方案。與背景的對比通常不是主要關注的問題,白色與大多數其他顏色(特別是圓圈上的標籤)的對比度非常好。 – 2018-03-06 18:56:34