2017-05-17 5 views
1

私はモデルを生成するためにdata.treeDiagrammeRを使用するRMarkdownドキュメントを持っています。私は、これらたとえばHow to include DiagrammeR/mermaid flowchart in a Rmarkdown fileDiagrammeRグラフがrmarkdownにレンダリングされたときに呼び出されるknitrフックはどれですか?

に使用されるものにセットアップが似て使用して表示します。

```{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"); 

``` 

これまでのところは良いです。キャプションテキストが追加されます。これはあなたが期待しているものです。

の上には、 'セットアップ' にknitrチャンク、私はuserfriendlyscienceからsetFigCapNumberingを使用:-)除き

https://github.com/Matherion/userfriendlyscience/blob/master/R/setFigCapNumbering.Rを参照してください)。この関数はknit_hooks$setを使用してプロットのフックを設定するので、キャプションには自動的に番号が付けられます。

ただし、この番号はDiagrammeRの出力には適用されません。

実際にプロットではなく、HTMLウィジェットやSVGなどであるので、意味があると思います。私はまだのように数字で番号を付けるのはです。

しかし、DiagrammeRの出力が生成されたときに、どのフックknitrが呼び出されるのかを確認するにはどうすればよいですか?

より一般的な「自動字幕」機能setCaptionNumberinghttps://github.com/Matherion/userfriendlyscience/blob/master/R/setCaptionNumbering.R)を使用することにいつも頼ることができ、その字幕と同じカウンターオプションを使用するように指示できます。これで問題は回避されますが、適切なknitrフックを変更することをお勧めします。

そしてこの問題(あるフックでknitrが特定の機能によって生成された出力に使用されているかどうかを調べること)が頻繁に発生するため、SA質問を開く価値があると思いました。

誰かがこれをどのように見つけられるか知っていますか?

答えて

2

knitr特定のチャンクによって生成された出力のknit_printを呼び出します。次に、これは出力のクラスに基づいて適切なメソッドを呼び出します。 methods("knit_print")を実行し、DiagrammeRの出力クラスに一致するメソッドがあるかどうかを確認して、使用可能なメソッドを確認できます。

あなたの例を見ると、出力のクラスは"DiagrammeR" "htmlwidget"なので、knitrはknit_print.htmlwidgetです。

このソースコードを調べると、htmltools::knit_print.htmlが呼び出され、タグがラップされてからasisが出力されます。だからあなたの質問に答えるために、あなたが使用しているどんな出力形式でもasis出力のためのデフォルトフックを使用します。

関連する問題