Вы можете попробовать использовать getGrob
и setGrob
для замены текста после создания графика диаграммы Венна.
library(eulerr)
mat <- matrix(data = c(T,T,T,F,T,F,T,F,T,T,T,F,F,F,T), ncol=3)
v <- venn(mat)
p <- plot(v,
labels = c(
"Left",
"Right",
"Oh, right"),
main = expression("Oh,"~italic("right"))
)
p
gg <- getGrob(p, "tag.label.3")
gg[[1]] <- expression(bold("Oh,"~bolditalic("yes!")))
setGrob(p, "tag.label.3", gg)
Редактировать: чтобы найти гроб, который необходимо отредактировать, вы можете использовать что-то вроде grid.ls
:
library(grid)
grid.ls(p)
Это перечислит имена grobs на вашем участке, включая tag.label.3
:
euler.diagram
main.grob
canvas.grob
diagram.grob.1
fills.grob.1
fills.grob.2
fills.grob.3
fills.grob.4
fills.grob.5
fills.grob.6
fills.grob.7
edges.grob
tags
tag.number.1
tag.label.1
tag.quantity.1
tag.number.2
tag.label.2
tag.quantity.2
tag.number.3
tag.label.3
tag.quantity.3
tag.number.4
GRID.null.1
tag.quantity.4
tag.number.5
GRID.null.2
tag.quantity.5
tag.number.6
GRID.null.3
tag.quantity.6
tag.number.7
GRID.null.4
tag.quantity.7
Методом проб/ошибок я обнаружил, что tag.label.3
был искомым текстом.
Кроме того, глядя на пакет eulerr
, у вас есть:
# from tag-grobs.R in eulerr package
labels_grob <- textGrob(
label,
x = unit(x, "native"),
y = unit(y, "native"),
rot = labels$rot[data$labels_par_id],
gp = labels$gp[data$labels_par_id],
name = paste0("tag.label.", data$labels_par_id)
)
Где tag.label.
используется в качестве префикса для текстовых меток.
person
Ben
schedule
30.10.2020