2016-06-15 5 views
5

R StudioでR Markdownとknitrを使用して、シンプルなプロジェクトのWebサイトを作成して更新し、私が構築しているデータ分析モデルで同僚の時間を最大限に保ちます。このページにはいくつかのプロットがあり、これまでのところ小さなプロットではうまくいきましたが、コードと結果を同じ場所で見ることができます。R Markdown/knitrのいくつかのプロットをサムネイルする簡単な方法は何ですか?

しかし、一部のプロットは非常に大きくなりました(モデルのサイドバイサイド比較を速くするためには大きくしなければなりません)。ページにうまく収まりません。私はそれらのいくつかのために別々にアップロードされたpdfs(ページ上のリンク付き)を使用しました。 サムネイルこれらのプロットのいくつかの簡単な方法があれば、ユーザーは小さなプロット画像を見ることができ、それをクリックして、さらに大きな画像を詳細に検査することができます。しかし、プロットインスタンスごとに多くの手動スクリプトが必要な場合は、時間を無駄にせずに、いくつかのpdfsをアップロードするだけです。同様の質問hereパッケージ、knitrbootsrapについてはお話ししますが、私はサムネイルにしたくありませんすべて私のプロットはちょうど少数です。パッケージにはMagnific popupが使われているようですが、Markdownページに自分自身を組み込むのは面倒です(?)。私はRマークダウンの参照guideに何も見つかりませんでした。もちろん、1つの方法は2つのプロットを生成することですが、これは表示されている別の小さなプロット画像/ pdfにリンクされていますが、より簡単でより自動化された方法が望ましいでしょう。

したがって、質問が簡単です R Markdownでクリック可能なプロットのサムネイルを生成する方法はありますか?

答えて

1

これは私が思いついたものです。

allow_thumbnails <- function(x, options) { 
    if (!is.null(options$thumb)) { 
    filename <- sprintf("%s.full.pdf", strsplit(basename(x), "\\.")[[1]][1]) 
    absolute_path <- file.path(dirname(x), filename) 

    # generate the full resolution pdf 
    pdf(absolute_path, width = options$thumb$width, height = options$thumb$height) 
     eval(parse(text = options$code)) 
    dev.off() 

    # add an html link to the low resolution png 
    options$fig.link = absolute_path 
    } 

    knitr:::hook_plot_md_base(x, options) 
} 

そしてRMDファイルで、私が使用して、フル解像度の画像のサイズを定義します。あなたはチャンクに小さな画像を生成する前に、フル解像度のPDFの画像を生成するように、プロットフックを追加 thumb引数:

```{r init} 
    knit_hooks$set(plot = allow_thumbnails) 
``` 

```{r my_large_plot, fig.width = 15, fig.height = 15, thumb = list(width = 45, height = 45)} 
    my_large_plot() 
``` 

これは、PDFファイルが表示されますクリック可能なPNGとHTMLファイルを生成します。

関連する問題