GNU R, VennDiagram и создание диаграммы дополнений

Я работал над диаграммами Венна в GNU R. Я пытался использовать пакеты venneuler и VennDiagram. Я считаю, что VennDiagram имеет гораздо более детальный контроль, но, похоже, ему не хватает документации для заполнения всех деталей. Самое близкое, что я могу найти, это файл PPT. http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3041657/bin/1471-2105-12-35-S4.PPT, который я нашел по URL-адресу: http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3041657/

Вот мои проблемы с использованием VennDiagram.

Для кода

require(VennDiagram)
venn.diagram(list(B = 1:2000, A = 200:400),fill = c("yellow", "blue"), 
alpha = c(0.8, 0.8), cex =1.5, cat.pos=0, cat.fontface = 4,
lty = 1, fontfamily =3, filename = "test001.jpeg");

(Здесь у меня было изображение, но, поскольку я новичок, у меня нет прав на публикацию изображения. Пожалуйста, сгенерируйте изображение из приведенного выше кода.)

Я могу сделать подмножество (отсюда круг внутри круга). Но я не нахожу способ сделать следующее:

  1. Сделайте так, чтобы BC отображалось равным B^C. Нет, буквальное «B^C» не работает. Я бы подумал, что есть способ перемаркировать наборы в другом свойстве, но я не видел способа сделать это.
  2. Чтобы расположить метки B ^ C и A ^ C внутри наборов, а не снаружи, как показано сейчас. Я попробовал cat.pos="inner", но это недопустимое свойство. Я также попробовал cat.pos=c(0,0) в надежде, что смогу передать его как X, Y, где X и Y от центра круга, но это не дало никаких других результатов.

Спасибо DWin, вот код для завершения моей схемы к упражнению. Предположим, что A ⊂ B. Покажите, что Bc ⊂ Ac.

require(VennDiagram)
plot.new()
venn.plot <- venn.diagram(
x = list(B = 1:200, A = 20:40), category.names= expression(B, A), 
          fill = c("yellow", "blue"), alpha = c(0.8, 0.8), cex =1.5, 
          cat.pos=0, cat.dist=c(-.1, -.1),  filename = NULL) ;
grid.draw(venn.plot); # grid graphic requires explicit print or draw operation
grid.text(expression(B^c),x=0.2,y=0.95)
grid.text(expression(A^c),x=0.16,y=0.95)
grid.text(expression(A^c),x=0.16,y=0.75)

person D. Alan Ridgeway    schedule 20.02.2012    source источник


Ответы (1)


Возможно что-то вроде этого:

 venn.diagram(list(B = 1:200, A = 20:40), category.names= expression(B^c, A), 
            fill = c("yellow", "blue"), alpha = c(0.8, 0.8), cex =1.5, cat.pos=0, 
            cat.dist=c(.1, -.1), cat.fontface = 4,lty = 1, fontfamily =3,
            filename = "test001.jpeg")

Чтобы получить метки внутри кругов, укажите 'cat.dist' с отрицательными значениями. Хитрость заключается в том, что контрольная точка находится на радиальном расстоянии от границы на 12 часов, а не от центра. В документации сказано, что аргумент category.names интерпретируется с помощью синтаксиса plotmath. Надстрочная операция в математике выполняется с помощью оператора «^». Здесь я переместил A" внутрь, оставив B^c снаружи, чтобы предположить, что помечается область за пределами круга B. (Я также улучшил время построения, уменьшив пример.) Я попытался нарисовать три метки. но это не похоже на "часть пакета".

введите здесь описание изображения

Вот как вы можете аннотировать с помощью grid.text() на экранном устройстве:

plot.new()
venn.plot <- venn.diagram(
 x = list(B = 1:200, A = 20:40), category.names= expression(B^c, A), 
          fill = c("yellow", "blue"), alpha = c(0.8, 0.8), cex =1.5, 
          cat.pos=0, cat.dist=c(.05, -.1),  filename = NULL) ;
 grid.draw(venn.plot); # grid graphic requires explicit print or draw operation
 grid.text("B",x=0.8)
# then you can save to file
person IRTFM    schedule 20.02.2012
comment
›Ваше обозначение B^C мне неизвестно. Это должно быть показателем. Так что если бы мне нужно было выразить семь в квадрате, я бы использовал 7^2. Вы можете использовать этот тип записи в MathML или в Wolfram Alpha и т. д. В этом случае я хочу, чтобы B показывал c в качестве показателя степени, чтобы выразить, что это является дополнением к B. - person D. Alan Ridgeway; 21.02.2012
comment
›Чтобы получить метки внутри кругов, введите 'cat.dist' с отрицательными значениями. Хитрость в том, что контрольная точка находится на радиальном расстоянии от границы, а не от центра. Когда я изначально добавил cat.pos=0, это центрировало метки относительно горизонтального положения метки. Я только что добавил cat.dist, так что теперь этот спинет выглядит как cat.pos=0, cat.dist=-500, но когда я визуализирую новую диаграмму, он не меняет вертикальное выравнивание внутри круга. Кажется, что он вообще не движется. - person D. Alan Ridgeway; 21.02.2012
comment
^-оператор как степенная функция очевидна, но совершенно не связана с теорией множеств. На самом деле я задавался вопросом, говорили ли вы о наборе мощности, но теперь ясно, что это не так. Его использование для обозначения набора дополнений (обратите внимание на правильное написание) ни в малейшей степени не похоже на ИМО. Какие элементы набора удаляются или исключаются с помощью этой записи? - person IRTFM; 21.02.2012
comment
хорошо, я не был уверен, как выразить обозначение, которое я вижу в книге B, где c - показатель степени, поэтому я сделал все возможное. Есть ли лучший способ выразить это на этом форуме и (подробнее по теме) есть ли способ выразить B, где C - показатель степени, показанный как показатель степени для дополнения в пакете VennDiagram? - person D. Alan Ridgeway; 21.02.2012
comment
Вы пытаетесь использовать B ^ c для обозначения надстрочного индекса c? Это кажется менее стандартным, чем обычное обозначение B' для дополнения B, но я полагаю, что это было бы возможно. Было бы лучше использовать прописные буквы для наборов и строчные буквы для операций или надстрочных индексов IMO. - person IRTFM; 21.02.2012
comment
›Вы пытаетесь использовать B^c для обозначения надстрочного индекса c? да. Я понимаю вашу точку зрения, учитывая, что у меня есть один учебник по статистике, который показывает B ', и основной учебник MIT, который показывает B ^ c. Учитывая, что я пытаюсь следовать книге MIT, я пытаюсь использовать персонажей в соответствии с книгой. - person D. Alan Ridgeway; 21.02.2012
comment
›Возможно, что-то вроде этого: Да, и верхний индекс, где у нас есть B^c, и возможность перемещать A внутри круга — это именно то, что я искал. Потрясающий. Спасибо. Чтобы в будущем не возникало вопросов об этом пакете, какой ресурс лучше всего подходит для этого пакета? Я пытался использовать справку (VennDiagram), но информации было минимум. - person D. Alan Ridgeway; 21.02.2012
comment
Я использовал много догадок и экспериментов. В основном просто использовал страницу помощи. Итак, когда же появится моя галочка? - person IRTFM; 21.02.2012