2013-07-28 22 views
1

我試圖用R package knitr創建HTML文件,但我發現整個體驗相當困難,可能是因爲文檔很稀疏當不使用LaTeX時(以及不知道Sweave的人)。具體問題是這樣的:

我希望在HTML文件中生成兩個類似的圖表,但每個圖表都必須有不同的高度。因此,這裏是我的RHTML文件:

<!DOCTYPE html> 
<html> 
<head> 
    <title>TEST</title> 
</head> 
<body> 



<!--begin.rcode 
opts_chunk$set(echo=FALSE, dpi=96, fig.width=9, fig.height=8, dev="png") 
    print("Width 9, height 8") 
    plot(rnorm(100), col="orange") 
end.rcode--> 

<hr> 

<!--begin.rcode 
opts_chunk$set(echo=FALSE, dpi=96, fig.width=9, fig.height=12, dev="png") 
    print("Width 9, height 12") 
    plot(rnorm(100), col="purple") 
end.rcode--> 

<hr> 

</body> 
</html> 

正如你可以看到兩個(簡單)地塊必須具有相同的寬度(9),但不同的高度(8則12)。這在R中非常簡單,但是knitr似乎想要保持縱橫比相同。下面是這兩個情節輸出:

enter image description here

enter image description here

正如你所看到的,下一個沒有我想要的縱橫比,它們是不同的寬度。

而且,我得到這一切塊輸出的,我認爲我是用回聲= FALSE抑制我的HTML文件的頂部....

enter image description here

我怎麼可能解決所有的這? opts_chunk $ set是否僅設置了某種全局選項?如果我想在每次輸出新圖形時重置選項,該怎麼辦?而我該如何壓制所有 knitr包的輸出?

+0

只是提出一些解決這些問題的建議:確保'cache = FALSE'並丟棄數字和緩存子文件夾,以確保它們全部得到更新。確保儘可能多的選項在'setup'塊中設置。然後,只修改它們更改的塊中的塊選項。另外,我總是將'rm(list = ls())'放在我的設置塊中,以便使寫入全局環境的某些參數不會出現。此外,排版會產生中間文件 - 也會將這些文件丟棄,以強制新的副本。最後,你可能會看''knitr'中的'spin'函數。 –

+0

好吧,只是試了一下。 rm(list = ls());擦除圖形目錄中的所有png,重新加載瀏覽器,清除其緩存;沒有快樂。還是一樣。由於我實際上沒有排版(只是HTML),除了「圖」目錄之外,還有什麼需要清除,你知道嗎?順便說一句,什麼是「設置塊」? –

+0

這沒什麼正式的,但許多人使用第一個代碼塊來設置'knitr'和'R'選項和設置。例如,它會有'opts_chunk'和'library(「無論」)。另外,如果你依賴全局變量,你會錯過重複研究的優點。如果可能的話,使腳本生成或至少從「csv」或「RData」或類似的東西獲取這些值。 –

回答

2

我認爲這與重複設置opts_chunk有關,儘管我不知道爲什麼它不應該按照您想要的方式工作。無論如何,這裏是一個工作的例子。我不會發布結果來節省空間,但它看起來像你想要的 - 尺寸是尊重。

<!DOCTYPE html> 
<html> 
<head> 
    <title>TEST</title> 
</head> 
<body> 

<!--begin.rcode Setup, echo = FALSE 
    opts_chunk$set(echo=FALSE, dpi=96, fig.width=9, fig.height=8, dev="png") 
end.rcode--> 

<!--begin.rcode Fig1 
    print("Width 9, height 8") 
    plot(rnorm(100), col="orange") 
end.rcode--> 

<hr> 

<!--begin.rcode Fig2, fig.width=9, fig.height=12 
    print("Width 9, height 12") 
    plot(rnorm(100), col="purple") 
end.rcode--> 

<hr> 

</body> 
</html> 
+0

作品像一個夢想,除了我不得不在安裝後的逗號我的系統至少第一塊塊必須閱讀:<! - begin.rcode安裝程序,echo = FALSE –

+0

非常好。我也學到了一些東西 - 從來沒有用'Rhtml'文件試過'knitr'。 –

+2

關鍵是,opts_chunk中設置的選項將應用於所有_following_塊,但不是當前塊 –

相關問題