2016-07-29 55 views
1

我正在繪製使用plot3d {rgl}的3d圖形,但它顯示在外部窗口框架上,因此,它不會在markdown html/pdf文件中捕獲。有沒有一種方法可以在RStudio的內部窗口中繪製圖形,以便在編譯筆記本時可以捕獲它?如何在RStudio的內部繪圖窗口中繪製plot3d

回答

2

rgl使用完全不同的繪圖系統。藝輝謝的knitr hook documentation介紹瞭如何使用rgl.snapshot()功能包括在knitr文件rgl輸出:

knit_hooks$set(rgl = function(before, options, envir) { 
    if (!before) { 
    ## after a chunk has been evaluated 
    if (rgl.cur() == 0) return() # no active device 
    name = paste(options$fig.path, options$label, sep = '') 
    rgl.snapshot(paste(name, '.png', sep = ''), fmt = 'png') 
    return(paste('\\includegraphics{', name, '}\n', sep = '')) 
    } 
}) 

(然後使用你的塊選項rgl=TRUE)。您還可以將輸出包括爲interactive webgl element in an HTML document。如果使用knitr spin選項(參見here),你應該能夠包括像

#+ my_rgl_plot, rgl=TRUE 

線的情節設置塊選項之前。

+0

非常感謝您的回覆。我嘗試過,但在一個循環中生成多個圖,它不起作用。 – Annie

+0

你能給出一個可重複的例子嗎?您可能需要構建自己的代碼,以便每次運行'rgl.snapshot',然後將結果合併到輸出中(例如,對於筆記本格式,這可能有些複雜,顯式編寫'.rmd'文件可能更容易比在筆記本的限制內工作) –

+0

非常感謝您的幫助,我找到了解決方案http://stackoverflow.com/questions/38664432/how-to-inlcude-multiple-plot3d-in-markdown-knitr-under-一個循環 – Annie