【问题标题】:Adjust edge label position in mediation diagram with DiagrammeR?使用 DiagrammeR 调整中介图中的边缘标签位置?
【发布时间】:2023-03-06 00:38:02
【问题描述】:

我正在尝试使用 R 中的DiagrammeR 绘制标准三角中介图(它也可以解释 graphviz 代码)。总的来说,它工作正常,但边缘标签文本放置得很奇怪。底部边缘标签未居中,两个有角度的边缘标签位于不同的高度(参见下图中的红线)。有没有办法手动为边缘文本分配位置或更一致的东西?`

library(DiagrammeR)

# Create a node data frame (ndf)
ndf <- create_node_df(
  n         = 3,
  label     = c("Experimental\nTreatment", "Some\nMediator", "Outcome\nof Interest"),
  shape     = rep("rectangle", 3),
  style     = "empty",
  fontsize  = 6,
  fixedsize = TRUE,
  height    = .5,
  width     = .75,
  color     = "gray40",
  x         = c(1, 2, 3),
  y         = c(1, 2, 1)
)

# Create an edge data frame (edf)
edf <- create_edge_df(
  from     = c(1, 1, 2),
  to       = c(2, 3, 3),
  label    = c("1.1*", "2.0*", "-0.33***"),
  fontsize = 6,
  minlen   = 1,
  color    = "gray40",
  )

# Create a graph with the ndf and edf
graph <- create_graph(
  nodes_df = ndf,
  edges_df = edf
  )

graph %>%
  render_graph()

【问题讨论】:

    标签: r label graphviz diagrammer


    【解决方案1】:

    我也很想知道这个问题的答案。

    我已尝试删除默认的“布局”图形属性并通过以下方式设置图形布局的方向:

    graphAttr

    但是,我收到以下错误: 错误:“get_global_graph_attrs”不是从“命名空间:DiagrammeR”导出的对象

    ....就是这样,因此,我被卡住了。

    【讨论】:

      【解决方案2】:

      在摆弄DiagrammeR 一段时间后,我最终切换到LaTeX 图表包TikZ。它允许对图表的各个方面进行大量控制,但可能会让人不知所措。如果这很重要,TikZ 还需要进行一些调整才能将图表转换为 HTML 输出。对于使用 LaTeX 的 Beamer 幻灯片类的演示文稿,使用 R 中的函数生成 TikZ 代码效果很好。然后将该 TikZ 代码写入一个文本文件,该文本文件可以通过 LaTeX 命令\input{path/to/file.txt} 自动导入,或者直接复制并粘贴到我的幻灯片中。

      在此处查看两个 DiagrammeR 解决方案和 TikZ 解决方案的代码:https://stackoverflow.com/a/64886536/893399

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多