在rmarkdown中呈现DiagrammeR图时会调用哪些knitr钩子?

时间:2017-05-17 13:46:14

标签: r knitr r-markdown diagrammer

我有一个RMarkdown文档,我使用data.treeDiagrammeR来生成模型。然后,我使用类似于How to include DiagrammeR/mermaid flowchart in a Rmarkdown file

中使用的设置显示这些设置

例如:

```{r fig.cap="Structureel model bij enkelvoudige regressie.", fig.with=4, fig.height=1}

drawStructuralModel <- function(covariates, criterion) {
  ### Create tree
  res <- Node$new(criterion);
  for (covariate in covariates) {
    res$AddChild(covariate);
  }
  ### Set display settings
  SetEdgeStyle(res, dir='back');
  res <- ToDiagrammeRGraph(res, direction = "descend");
  res <- add_global_graph_attrs(res, "layout", "dot", "graph");
  res <- add_global_graph_attrs(res, "rankdir", "RL", "graph");

  ### Draw and return tree
  render_graph(res);
}

drawStructuralModel("X", "Y");

```

到目前为止一切顺利。添加了标题文字,这是您期望的。

除外: - )

以上,在&#39;设置&#39; knitr chunk,我使用了来自setFigCapNumbering的{​​{1}}(请参阅https://github.com/Matherion/userfriendlyscience/blob/master/R/setFigCapNumbering.R)。此函数使用userfriendlyscience为绘图设置挂钩,以便标题自动编号。

但是这个编号并没有应用于knit_hooks$set输出。

我想这是有道理的,因为它实际上不是一个情节,而是一个HTML小部件或一些SVG左右。不过,我仍然喜欢它被编号为数字。

但是如何在生成DiagrammeR输出时找出哪个钩子knitr调用?

我总是可以使用更通用的自动字幕&#39;函数DiagrammeRhttps://github.com/Matherion/userfriendlyscience/blob/master/R/setCaptionNumbering.R),并告诉它使用与使用的图标题相同的计数器选项。这样可以回避这个问题,但我更愿意修改相应的setCaptionNumbering钩子。

由于这个问题(弄清楚哪个钩子knitr用于给定函数产生的输出)可能更频繁地发生,我认为值得打开一个SA问题。

有人知道你怎么能找到这个吗?

1 个答案:

答案 0 :(得分:2)

yoursite.com/users/new对给定块生成的输出调用knitr。然后,它根据输出的类调用适当的方法。您可以通过运行knit_print找出可用的方法,然后查看其中任何方法是否与DiagrammeR的输出类相匹配。

看看你的例子,我猜测你的输出类是methods("knit_print"),所以knitr正在调用"DiagrammeR" "htmlwidget"

深入研究该源代码,调用knit_print.htmlwidget,包装标签,然后输出asis。因此,为了回答您的问题,它使用asis输出的默认挂钩,无论您使用何种输出格式。