繁体   English   中英

使用DiagrammeR调整中介图中的边缘标签位置?

[英]Adjust edge label position in mediation diagram with DiagrammeR?

我正在尝试使用 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()

显示边缘标签文本未正确排列的示例中介图

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

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

graphAttr <- DiagrammeR::get_global_graph_attrs(graph)

但是,我收到以下错误:错误:'get_global_graph_attrs' 不是来自 'namespace:DiagrammeR' 的导出对象

....因此,我被卡住了。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM