gpt4 book ai didi

r - 在欧拉图中绘制带有拆分法线和斜体面的标签 (eulerr)

转载 作者:行者123 更新时间:2023-12-04 03:49:53 24 4
gpt4 key购买 nike

eulerr 库使用以下代码生成绘图:

library(tidyverse)
library(eulerr)

matrix(data = c(T,T,T,F,T,F,T,F,T,T,T,F,F,F,T), ncol=3) %>%
venn %>%
plot(
labels = c(
"Left",
"Right",
"Oh, right"),
main = expression("Oh,"~italic("right"))
)

enter image description here

我需要在标签中使用斜体,但只是部分。我希望第三个标签的格式像标题一样:哦,

我尝试了pasteexpressionbquotesubstitute等多种排列方式,同时设置label = 但无济于事。

想法?

最佳答案

在创建维恩图后,您可以尝试使用 getGrobsetGrob 替换文本。

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)

venn plot with changed label

编辑:要找到需要编辑的grob,你可以使用类似grid.ls的东西:

library(grid)

grid.ls(p)

这将在您的绘图中列出 grob 的名称,包括 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. 用作文本标签的前缀。

关于r - 在欧拉图中绘制带有拆分法线和斜体面的标签 (eulerr),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64581189/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com