web-dev-qa-db-ja.com

knitr / rmarkdownのpngとしてプロット

次のRmarkdownは、プロットされた3DグラフをHTMLでレンダリングしますが、PDFではレンダリングしません。

_Testing plotly

```{r}
library(plotly)
p <- plot_ly(data=iris, x=~Sepal.Length, y=~Sepal.Width, z=~Petal.Length, 
             color=~Species, symbols=c(0,1), type="scatter3d", mode="markers")
p
```
_

グラフのスナップショットは次のように表示されます。

enter image description here

プロットヘルプページ によると:

HTML出力でrmarkdownを使用している場合、プロットオブジェクトをコードチャンクに出力すると、インタラクティブなHTMLグラフが作成されます。 HTML以外の出力でrmarkdownを使用する場合、プロットオブジェクトを印刷すると、グラフのpngスクリーンショットが表示されます。

プロットグラフをPDFでレンダリングする方法はありますか?

注:rmarkdown::render()からのエラーは次のとおりです。

_Error: Functions that produce HTML output found in document targeting latex output.
Please change the output type of this document to HTML. Alternatively, you can allow
HTML output in non-HTML formats by adding this option to the YAML front-matter of
your rmarkdown file:

  always_allow_html: yes

Note however that the HTML output will not be visible in non-HTML formats.
_
13
Megatron

プロット画像をpngファイルとしてローカルに保存し、RMDファイルにインポートするという小さな回避策を作成しました。パッケージwebshotが必要です。これは、次の方法でロードできます。

install.packages("webshot")

さらに、経由でphantomjsをインストールする必要があります

webshot::install_phantomjs()

次に(phantomjsがPATHにある場合)、RMDファイルを作成できます。

---
title: "Untitled"
output: pdf_document
---

```{r}
library(plotly)
p <- plot_ly(economics, x = ~date, y = ~unemploy / pop)

tmpFile <- tempfile(fileext = ".png")
export(p, file = tmpFile)
```
![Caption for the picture.](`r tmpFile`)

これは私にとってはうまくいきます..おそらくそれはあなたにとっても回避策です!

6
J_F

@hrbrmstrがコメントしたように、export()は以前はWebGLをまったくサポートしていませんでしたが、最近のバージョンではRSeleniumを介したpngへのエクスポートがサポートされています(help(export, package = "plotly")を参照)。 PDFエクスポートが必要な場合は、クラウドアカウントの料金を支払う必要があります-- https://plot.ly/products/cloud/

3
Carson

Rマークダウンコンパイルエラー: と同じ問題。あなたはあなたがKNITしたいフォーマットを選ぶ必要があります、私のものを見ようとしました。

---
title: "<img src='www/binary-logo.jpg' width='240'>"
subtitle: "[<span style='color:blue'>binary.com</span>](https://github.com/englianhu/binary.com-interview-question) Interview Question I"
author: "[<span style='color:blue'>®γσ, Lian Hu</span>](https://englianhu.github.io/) <img src='www/ENG.jpg' width='24'> <img src='www/RYO.jpg' width='24'>白戸則道®"
date: "`r Sys.Date()`"
output:
  tufte::tufte_html:
    toc: yes
  tufte::tufte_handout:
    citation_package: natbib
    latex_engine: xelatex
  tufte::tufte_book:
    citation_package: natbib
    latex_engine: xelatex
link-citations: yes
---

KNIT

0
RYO ENG Lian Hu

PDFの作業にレンダリングするために私が行うことですが、他のニットタイプやrstudioのrmarkdownファイルでインタラクティブなプロットを使用することはできます。

これはセットアップブロック(または実際にはファイルの初期のどこか)にあります:

is_pdf <- try (("pdf_document" %in% rmarkdown::all_output_formats(knitr::current_input())), silent=TRUE)
is_pdf <- (is_pdf == TRUE)

次に、これを使用して、作成しているドキュメントの種類に基づいてプロットプロットをレンダリングします。

if (is_pdf) { export(base_plot) } else {base_plot}

例ではbase_plotはプロットの名前です。

0
Collin Reinking