Добавление дополнительных текстов к диаграмме Венна, нарисованной с помощью пакета VennDiagram R

У меня есть код, взятый из пакета VennDiagram для рисования диаграммы Венна (ниже). Я могу реализовать этот код для рисования диаграммы Венна, но я также хотел бы добавить дополнительный текст в каждую из разделенных областей (уникальный и общий для I, II, II, IV). Например, после запуска этого кода уникальный раздел «I» равен 60, я хочу добавить что-то вроде XX XU внизу 60 и так далее для других секционированных областей. Есть ли способ в R изменить этот код для достижения этих изменений?

library(VennDiagram)

venn.plot <- venn.diagram(
   x = list(
       I = c(1:60, 61:105, 106:140, 141:160, 166:175, 176:180, 181:205, 206:220),
       IV = c(531:605, 476:530, 336:375, 376:405, 181:205, 206:220, 166:175, 176:180),
       II = c(61:105, 106:140, 181:205, 206:220, 221:285, 286:335, 336:375, 376:405),
       III = c(406:475, 286:335, 106:140, 141:160, 166:175, 181:205, 336:375, 476:530)
       ),
filename = "1D-quadruple_Venn.tiff",
col = "black",
lty = "dotted",
lwd = 4,
fill = c("cornflowerblue", "green", "yellow", "darkorchid1"),
alpha = 0.50,
label.col = c("orange", "white", "darkorchid4", "white", "white", "white",
 "white", "white", "darkblue", "white",
  "white", "white", "white", "darkgreen", "white"),
cex = 2.5,
fontfamily = "serif",
fontface = "bold",
cat.col = c("darkblue", "darkgreen", "orange", "darkorchid4"),
cat.cex = 2.5,
cat.fontfamily = "serif"
);

биграммы Венна:

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

Спасибо


person user27976    schedule 21.05.2014    source источник
comment
Не понятно, чего вы хотите добиться. лучше добавить сюжет к вашему вопросу и добавить текст вручную (используя краску или другие инструменты) на сюжет, чтобы уточнить, что вы хотите сделать.   -  person agstudy    schedule 22.05.2014
comment
Я не думаю, что это (легко) возможно. См. этот пост stackoverflow.com/questions/12803390/ - хотя это было некоторое время назад. Тем не менее, вы можете вручную изменить метки grob.   -  person user20650    schedule 22.05.2014


Ответы (1)


Кое-что, что поможет вам начать:

Я использовал ваш пример, но для filename я использовал NULL, потому что хотел построить диаграмму Венна вместе с дополнительными метками.

## Function that creates a grid.text object
## The offset sets the distance from existing label 
addlab <- function(lab, x, y, offset = 0) {
    grid.text(lab, unit(as.numeric(x), "npc"), 
                   unit(as.numeric(y) - offset, "npc"), 
              draw = FALSE)
}

## Adding a number under each label
lbls <- gList()
o <- 1 ## counter
for(i in seq(along.with=venn.plot)) {
  ## Check if it is a grid.text object
  if(regexpr("text", venn.plot[[i]]$name) > 0) {
    ## Write counter value under the existing label
    lbls <- gList(lbls, addlab(o, venn.plot[[i]]$x, venn.plot[[i]]$y, 0.03))
    ## Increase the counter
    o <- o + 1
  }
}

Постройте диаграмму Венна и метки:

## tiff("out.tiff")
grid.draw(venn.plot)
grid.draw(lbls)
## dev.off()

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

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

Надеюсь, что это поможет вам,

Алекс

person alko989    schedule 22.05.2014
comment
Большое спасибо Алекс за коды, чтобы начать меня в правильном направлении. Я ценю вашу помощь. Сейчас я работаю над тем, чтобы получить коды для написания двух цифр под каждой этикеткой. - person user27976; 22.05.2014