Просмотр venn.diagram в программе просмотра RStudio (а не просто запись в файл) с помощью VennDiagram? - PullRequest
2 голосов
/ 23 апреля 2020

Используя пакет VennDiagram, мы можем создать диаграмму Венна, например, с помощью функции venn.diagram() , например, :

enter image description here

library(tidyverse)
library(hrbrthemes)
library(tm)
library(proustr)

# Load dataset from github
data <- read.table("https://raw.githubusercontent.com/holtzy/data_to_viz/master/Example_dataset/14_SeveralIndepLists.csv", header=TRUE) 
to_remove <- c("_|[0-9]|\\.|function|^id|script|var|div|null|typeof|opts|if|^r$|undefined|false|loaded|true|settimeout|eval|else|artist")
data <- data %>% filter(!grepl(to_remove, word)) %>% filter(!word %in% stopwords('fr')) %>% filter(!word %in% proust_stopwords()$word)

# library
library(VennDiagram)

#Make the plot
venn.diagram(
  x = list(
    data %>% filter(artist=="booba") %>% select(word) %>% unlist() , 
    data %>% filter(artist=="nekfeu") %>% select(word) %>% unlist() , 
    data %>% filter(artist=="georges-brassens") %>% select(word) %>% unlist()
  ),
  category.names = c("Booba (1995)" , "Nekfeu (663)" , "Brassens (471)"),
  filename = 'venn.png',
  output = TRUE ,
  imagetype="png" ,
  height = 480 , 
  width = 480 , 
  resolution = 300,
  compression = "lzw",
  lwd = 1,
  col=c("#440154ff", '#21908dff', '#fde725ff'),
  fill = c(alpha("#440154ff",0.3), alpha('#21908dff',0.3), alpha('#fde725ff',0.3)),
  cex = 0.5,
  fontfamily = "sans",
  cat.cex = 0.3,
  cat.default.pos = "outer",
  cat.pos = c(-27, 27, 135),
  cat.dist = c(0.055, 0.055, 0.085),
  cat.fontfamily = "sans",
  cat.col = c("#440154ff", '#21908dff', '#fde725ff'),
  rotation = 1
)

В результате .png записывается непосредственно в рабочий.

Как вместо этого можно просматривать его на панели просмотра RStudio, а также использовать в RMarkdown docs et c (то есть точно так же, как обычные ggplot или базовые графики)?

Также обратите внимание, что тот же вопрос относится к любому из примеров, найденных в документации ? venn.diagram (кажется, что все они записывают в файл вместо отображения в программе просмотра RStudio)

Ответы [ 3 ]

2 голосов
/ 23 апреля 2020

Это также должно сделать работу. Я удалил аргументы для читабельности:

...
plt <- venn.diagram(
  filename = NULL,
  cex = 1,
  cat.cex = 1,
  lwd = 2,
  )
grid::grid.draw(plt)

С ?venn.diagram

имя файла
Имя файла для вывода изображения, или если NULL возвращает сам объект сетки

Кажется, вы можете контролировать почти все. Снова документы:

... Серия графических параметров, изменяющих сюжет. Подробности см. Ниже

Аргумент Размеры Венна Описание класса
cex 1,2,3,4,5 цифр c Вектор, дающий размер для каждой метки области (длина = 1/3/7 / 15 на основе номера набора)

Таким образом, мы должны иметь возможность отображать grid объекты. plot() и print() не выполняют эту работу (кажется, что нет print.grid()).

2 голосов
/ 23 апреля 2020

Я обычно делаю:

library(VennDiagram)
set.seed(1)
list1 <- list(A=sample(LETTERS, 12), B=sample(LETTERS, 12))
venn1 <- venn.diagram(list1, filename = NULL)
grid.newpage()
grid.draw(venn1)

Я думаю, что он все еще записывает файл журнала в рабочий каталог, но не в граф.

Вы можно поставить две диаграммы рядом, как это:


library(gridExtra)
set.seed(2)
list2 <- list(A=sample(LETTERS, 16), B=sample(LETTERS, 12))
venn2 <- venn.diagram(list2, filename = NULL)
grid.arrange(gTree(children=venn1),
             gTree(children=venn2),
             ncol=2)

Создано в 2020-04-23 с помощью пакета Представить (v0 .3.0)

1 голос
/ 23 апреля 2020

Я понял, способ - может быть, есть лучший способ (ы). Это включает запись в tempfile() вместо файла в рабочем каталоге и последующее чтение его с несколькими дополнительными строками кода

Примечание: единственное изменение в исходном коде - это добавление

  • 1 дополнительная строка в начале temp_file <- tempfile()
  • перезапись filename = 'venn.png' в filename = temp_file
  • 3 дополнительных строки внизу
# Libraries
library(tidyverse)
library(hrbrthemes)
library(tm)
library(proustr)

# Load dataset from github
data <- read.table("https://raw.githubusercontent.com/holtzy/data_to_viz/master/Example_dataset/14_SeveralIndepLists.csv", header=TRUE) 
to_remove <- c("_|[0-9]|\\.|function|^id|script|var|div|null|typeof|opts|if|^r$|undefined|false|loaded|true|settimeout|eval|else|artist")
data <- data %>% filter(!grepl(to_remove, word)) %>% filter(!word %in% stopwords('fr')) %>% filter(!word %in% proust_stopwords()$word)

# library
library(VennDiagram)

temp_file <- tempfile()

#Make the plot
venn.diagram(
  x = list(
    data %>% filter(artist=="booba") %>% select(word) %>% unlist() , 
    data %>% filter(artist=="nekfeu") %>% select(word) %>% unlist() , 
    data %>% filter(artist=="georges-brassens") %>% select(word) %>% unlist()
  ),
  category.names = c("Booba (1995)" , "Nekfeu (663)" , "Brassens (471)"),
  filename = temp_file,
  output = TRUE ,
  imagetype="png" ,
  height = 480 , 
  width = 480 , 
  resolution = 300,
  compression = "lzw",
  lwd = 1,
  col=c("#440154ff", '#21908dff', '#fde725ff'),
  fill = c(alpha("#440154ff",0.3), alpha('#21908dff',0.3), alpha('#fde725ff',0.3)),
  cex = 0.5,
  fontfamily = "sans",
  cat.cex = 0.3,
  cat.default.pos = "outer",
  cat.pos = c(-27, 27, 135),
  cat.dist = c(0.055, 0.055, 0.085),
  cat.fontfamily = "sans",
  cat.col = c("#440154ff", '#21908dff', '#fde725ff'),
  rotation = 1
)


# https://stackoverflow.com/a/20909108/5783745
library(png)
img <- readPNG(temp_file)
grid::grid.raster(img)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...