масштабирование тройной диаграммы Венна в R с пакетом VennDiagram

Кто-нибудь знает, как заставить пакет R VennDiagram масштабировать круги диаграммы Венна, содержащие 3 пересекающихся набора, в соответствии с размером набора?

Я могу добиться такого масштабирования с помощью пакета venneular, но я нахожу его немного ограниченным с точки зрения других графических опций по сравнению с VennDiagram.

В документации к пакету VennDiagram предлагается установить для аргумента «масштабируемый» значение 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)

Большое спасибо

Джим


person user1563570    schedule 30.07.2012    source источник


Ответы (5)


Итак, чтобы ответить на мой собственный вопрос: для определенных конфигураций математически невозможно создать масштабированный трехсторонний Венн с использованием кругов.

person user1563570    schedule 13.08.2012
comment
на Biostars есть похожая тема, говорящая, что это невозможно. С элипсами это возможно. Вы нашли способ нарисовать это с помощью R? - person userJT; 11.12.2012

Общее масштабирование для диаграмм Венна с тремя наборами отключено из-за потенциально вводящего в заблуждение визуального представления данных.

Пожалуйста, попробуйте использовать следующие два инструмента,

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

И к вашему вопросу, пожалуйста, прочитайте следующие примечания:

ключевым моментом является установка overrideTriple в draw.triple.venn

Диаграммы Эйлера построены для 19 частных случаев, если euler.d == TRUE. В некоторых диаграммах Эйлера используются аргументы масштабирования, sep.dist или смещения, характерные для диаграмм Венна с двумя наборами, где это уместно. По умолчанию функция размещает три круга в виде треугольника с двумя наборами сверху и одним набором снизу. Кружки соответствуют области1, области2 и области3 по часовой стрелке с областью1 в верхнем левом углу. Н.Б. Общее масштабирование для диаграмм Венна с тремя наборами отключено из-за потенциально вводящего в заблуждение визуального представления данных. Чтобы снова включить, присвойте любое значение переменной overrideTriple.

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

person Shicheng Guo    schedule 10.07.2015
comment
Я попытался установить эту переменную, и она не работает. Я запустил пример из исходного вопроса с overrideTriple и без него (я установил для него значение TRUE), и результат был таким же. - person Lauren Fitch; 08.05.2017
comment
Хитрость заключается в том, как должна быть установлена ​​переменная overrideTriple=T... а именно перед вызовом draw.triple.venn - см. ответ @atongsa. Кстати, это также работает для более общего вызова venn.diagram в пакете {VennDiagram}. - person rocanja; 24.07.2019
comment
Хм?? Кажется более ошибочным не масштабировать круги. В любом случае, спасибо за подсказку. - person deltaray; 08.02.2020

Мое решение:

overrideTriple=T
draw.triple.venn(9, 20, 30, 2, 10, 3, 2, category =
               rep("", 3), rotation = 1, reverse = FALSE, euler.d = F, scaled = F)
person atongsa    schedule 04.12.2018
comment
Это решило это для меня! Хитрость заключалась в том, как установить переменную 'overrideTriple=T'... а именно, перед вызовом 'draw.triple.venn'. Кстати, это также работает для более общего вызова venn.diagram в пакете {VennDiagram}. - person rocanja; 24.07.2019

Вместо этого я использую Vennerable. Чтение данных в объект Венна несколько сложно, но генерирует взвешенные/масштабированные диаграммы из трех наборов + графические опции.

person Linner    schedule 07.02.2013

Если вы предпочитаете другой подход, мы разработали пакет 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 является предварительным, и возможности управления выводом очень ограничены. Мы работаем над новой версией с учетом отзывов, которые мы получаем. Существует также веб-версия с дополнительными параметрами, и вывод может всегда редактируйте с помощью внешних инструментов, таких как Inkscape.

person vqf    schedule 01.04.2018