2014-11-24 58 views
1

我想爲rgl包寫一個小插曲。我想我會嘗試使用knitr和markdown來製作一個HTML小插件,這樣我就可以包含交互式顯示以及快照。knitr和rgl:大小不一致?

Rstudio的最新版本包括pandoc並使用rmarkdown包處理輸入到HTML中,但並非所有系統(包括顯然R-forge)都包含pandoc,而knitr則回退到某些較早版本的markdown處理。

我在找的是我得到不同大小的報告給我的rgl設備,這取決於我使用的是pandoc路徑還是較舊的路徑。使用Yihui的knitr::hook_webgl函數作爲鉤子,圖像的大小是它們應該的大小的兩倍。以像素爲單位的大小計算在該函數中使用線路

rgl::par3d(windowRect = 100 + options$dpi * c(0, 0, options$fig.width, options$fig.height))

這裏,options是傳遞給函數的參數之一。它包含塊選項。

爲了獲得正確的尺寸,我需要將dpi除以2.另一方面,在較舊的驅動程序中使用相同的代碼可以正常工作。

這是knitr中的錯誤,還是我在某處丟失了某些選項?

下面是在RStudio使用pandoc生產的樣品,與hook_rgl改性分割尺寸由2所述附圖的尺寸欲:

http://www.stats.uwo.ca/faculty/murdoch/temp/rgl.html

而這裏的一個系統上處理的相同的輸入文件沒有潘多克。請注意,RGL數字是一半大:

http://www.stats.uwo.ca/faculty/murdoch/temp/rgl2.html

+0

你如何定義'options'?除非你已經寫了'options()',那麼你應該在'options $ dpi'中得到一個錯誤。 – rawr 2014-11-24 20:13:49

+0

options是hook_rgl的一個參數。標題是'function(before,options,envir)'。 – user2554330 2014-11-24 20:40:01

+0

那有什麼關係?這不是問題,也不是我問的問題,那不是你正在使用的函數('rgl :: par3d'),這不是你如何使用'options'的方法。 – rawr 2014-11-24 20:44:52

回答

2

我發現這種差異的解釋。當存在pandoc時,knitr向塊鉤子報告選項$ dpi是192.當它不存在時,塊鉤子被告知選項$ dpi是72.

我將採用的解決方法是忽略選項$ dpi,並在我的rgl鉤子函數中將dpi固定爲96。