首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在欧拉图(eulerr)中用分裂的法脸和斜面绘制标签。

在欧拉图(eulerr)中用分裂的法脸和斜面绘制标签。
EN

Stack Overflow用户
提问于 2020-10-28 20:57:40
回答 1查看 292关注 0票数 3

eulerr库生成具有以下代码的绘图:

代码语言:javascript
复制
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"))
       )

我需要在标签中有斜体字,但只有部分。我希望第三个标签的格式像标题:哦,对。

我尝试了pasteexpressionbquotesubstitute的各种排列,同时设置了label =,但都没有效果。

想法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-30 12:46:51

您可以尝试在创建venn图之后使用getGrobsetGrob替换文本。

代码语言:javascript
复制
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)

编辑:要找到需要编辑的grob,可以使用类似于grid.ls的内容

代码语言:javascript
复制
library(grid)

grid.ls(p)

这将在您的地块中列出grobs的名称,包括tag.label.3

代码语言:javascript
复制
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包,您有:

代码语言:javascript
复制
# 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.用作文本标签的前缀。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64581189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档