2016-09-28 5 views
3

を使用してオブジェクトをブラウザにsvgとして表示したいと考えています。rmarkdownのgmarkplotオブジェクトをhtml svgコードとして表示

--- 
title: "" 
output: html_document 
--- 

```{r setup, include = FALSE} 
library(svglite) 
library(ggplot2) 
knitr::opts_chunk$set(
     dev = "svglite", 
     fig.ext = ".svg" 
) 
``` 

```{r, warning = F} 
data(cars) 

ggplot(mtcars, aes(mpg, qsec, color = factor(cyl))) + 
     geom_point() 

``` 

すべてが正常に動作しますが、私はChromeでそれを開き、エレメントを点検しようとすると、それは全体のプロットは<img>タグ内にあることが判明しました。私が達成したいのは、ggplotというHTMLコードののdocを作成することです。

htmlSVG機能を使用しようとしましたが、ggplotでは機能しません。私はエラーを取得する:

Error in FUN(X[[i]], ...) : argumemt is not a character vector 

しかし、それは基本的なプロット上で非常にうまく機能 - htmlSVG(plot(data = sampled_df, z ~ price))私はでそれを含む場合。

ggplotオブジェクトでも同じことを実行できますか?

答えて

2

解決策が見つかりました。私がしなければならなかったのは、strstringを使ってコード全体を生成し、次にhtmltools::HTMLを使うことです。私はdev.off()によってメッセージ生成を隠すためにinvisible関数を使用

--- 
title: "" 
output: html_document 
--- 

```{r setup, include = FALSE} 
library(svglite) 
library(ggplot2) 
knitr::opts_chunk$set(
     dev = "svglite", 
     fig.ext = ".svg" 
) 
``` 

```{r, warning = F, echo = F} 
data(cars) 

s <- svgstring() 
ggplot(mtcars, aes(mpg, qsec, color = factor(cyl))) + 
     geom_point() 

htmltools::HTML(s()) 

invisible(
     dev.off() 
) 

``` 

関連する問題