Изменить цвет метки диаграммы Венна с помощью Венны с / без ggplot2 - PullRequest
2 голосов
/ 22 апреля 2020

Я хочу построить диаграмму Венна, используя R. Для этой цели я использую пакет venn , потому что позволяет принимать более 4-5 групп (как большинство пакетов, которые я нашел ).

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

В последнее время пакет venn имеет логический аргумент ggplot , но я думаю, что он используется только для эстетики пути. Использование ggplot = TRUE упростит процесс сохранения с помощью ggsave , назначив график в качестве переменной (он не работает с ggplot = FALSE , но не работает примите переменную custom_color и через ошибку.

Это пример кода:

x = rep(1, 20)
d = data.frame('A'=x, 'B'=x, 'C'=x, 'D'=x, 'E'=x, 'F'=x)
custom_color = c('blue', 'red', 'orange', 'green', 'yellow', 'pink')

library(venn)
library(grDevices)

png(filename = 'venn_plot.png', width = 2, height = 2, 
    units = 'in', res = 150, bg = 'black')
venn(d, ggplot = FALSE, 
     zcolor = custom_color, col = custom_color, 
     opacity = .5, box = FALSE)
dev.off()

enter image description here

library(ggplot2)

v = venn(d, ggplot = TRUE, 
         zcolor = custom_color, col = custom_color, 
         opacity = .5, box = FALSE)
v

Error: Aesthetics must be either length 1 or the same as the data (1848): fill

1 Ответ

0 голосов
/ 22 апреля 2020

Вы можете захватить диаграмму Венна как объект сетки, а затем напрямую изменить параметры этого объекта. В качестве примера я переворачиваю метки на красный и черный фон. View может быть весьма полезным при определении параметров, которые нужно изменить.

library(gridGraphics)
library(grid)
venn(d, ggplot = FALSE, 
     zcolor = custom_color, col = custom_color, 
     opacity = .5, box = FALSE)
grid.echo()
venn_plot <- grid.grab()
venn_plot$children$`graphics-plot-1-text-2`$gp$col <- "red"
venn_plot$children$`graphics-background`$gp$fill <- "black"
grid.draw(venn_plot)

enter image description here

...