Диаграмма Венна пропорциональна и цветопередача с полупрозрачностью - PullRequest
53 голосов
/ 03 января 2012

У меня есть следующий тип данных счета.

A   450
B   1800
A and B both    230

Я хочу создать красочную (возможно, полупрозрачную на перекрестках), как на следующей диаграмме Венна.

enter image description here

Примечание: Этот рисунок является примером руки, нарисованной в PowerPoint, и не в масштабе.

Ответы [ 6 ]

49 голосов
/ 03 января 2012

Вот пост, в котором обсуждается диаграмма Венна из списка кластеров и сопутствующих факторов .

Для простого решения используйте пакет Веннеулер :

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

enter image description here

Более подробные и индивидуальные решения можно найти в пакете VennDiagram .

41 голосов
/ 03 января 2012

Основываясь на втором ответе Geek On Acid, на втором предложении (еще раз спасибо), я смог бы решить и проблему с линией. Я отправляю сообщение, если это применимо к другим googlers!

  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

35 голосов
/ 24 октября 2016

Я недавно опубликовал новый пакет R, eulerr , который делает то, что вы хотите. Это очень похоже на Веннеулера, но без его противоречий.

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

eulerplot

Или вы можете попробовать блестящее приложение для того же пакета r по адресу eulerr.co

shiny-euler

16 голосов
/ 10 апреля 2014

Даже если это не полностью отвечает на ваш вопрос.Я думал, что это будет полезно для других людей, желающих построить диаграмму Венна.Можно использовать функцию venn () из пакета 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 Впоследствии япросто добавьте цвета и прозрачность, используя иллюстратор.enter image description here

4 голосов
/ 15 февраля 2015

Я знаю, что ОП спрашивает о решении в R, но я хотел бы указать на веб-решение под названием BioVenn .Он берет до 3 списков элементов и рисует диаграмму Венна так, чтобы каждая поверхность была пропорциональна количеству элементов - как этот:

enter image description here

В этой диаграмме я изменилсявручную (через PhotoShop) размещение номеров, так как мне не понравились места, выбранные BioVenn.Но вы можете выбрать не иметь номера.

Теоретически списки, используемые с BioVenn, должны состоять из идентификаторов генов, но на практике это не имеет значения - списки просто должны содержать строки.

4 голосов
/ 15 июня 2013

Существует интуитивно понятный и гибкий пропорциональный плоттер, который вы можете загрузить и запустить.Найдите его по адресу: http://omics.pnl.gov/software/VennDiagramPlotter.php

и

jvenn : интерактивный просмотрщик диаграмм Венна - GenoToul Bioinfo: http://bioinfo.genotoul.fr/jvenn/

...