我有一个RMarkdown文档,我使用data.tree
和DiagrammeR
来生成模型。然后,我使用类似于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;函数DiagrammeR
(https://github.com/Matherion/userfriendlyscience/blob/master/R/setCaptionNumbering.R),并告诉它使用与使用的图标题相同的计数器选项。这样可以回避这个问题,但我更愿意修改相应的setCaptionNumbering
钩子。
由于这个问题(弄清楚哪个钩子knitr
用于给定函数产生的输出)可能更频繁地发生,我认为值得打开一个SA问题。
有人知道你怎么能找到这个吗?
答案 0 :(得分:2)
yoursite.com/users/new
对给定块生成的输出调用knitr
。然后,它根据输出的类调用适当的方法。您可以通过运行knit_print
找出可用的方法,然后查看其中任何方法是否与DiagrammeR的输出类相匹配。
看看你的例子,我猜测你的输出类是methods("knit_print")
,所以knitr正在调用"DiagrammeR" "htmlwidget"
。
深入研究该源代码,调用knit_print.htmlwidget
,包装标签,然后输出asis。因此,为了回答您的问题,它使用asis输出的默认挂钩,无论您使用何种输出格式。