【问题标题】:Embedding plotly output in R markdown在 R markdown 中嵌入绘图输出
【发布时间】:2014-09-30 21:38:40
【问题描述】:

有一个 blog entry 描述了从 R 的 plotly API 嵌入到 R 降价。我只是使用代码为 html 文档创建 iframe

当我在 R studio 中进行预览时,没有错误消息,并且 iframe 是在 html 文档中创建的。然而,它只是空的。显然它不会以某种方式加载内容。我没有事先在 R API 中创建绘图(但这应该没关系,因为这只是将图片嵌入到 html 中)不是吗?

我目前在 r markdown 中的代码是这样的

```{r}
library("knitr")
library("devtools")
url<-"https://plot.ly/~etpinard/251"
plotly_iframe <- paste("<iframe scrolling='no' seamless='seamless' src='", url, 
    "/800/600' width='800' height='600'></iframe>", sep = "")

```
`r I(plotly_iframe)`

【问题讨论】:

    标签: html r knitr r-markdown plotly


    【解决方案1】:

    我们第一次发布 RPub 时遇到了同样的问题。 Here 是您在已发布 RPub 中的代码。

    一旦在 RPubs.com 上发布而不是预览版,图表应该显示出来。您可以使用 RPubs 中的“在浏览器中打开”选项对其进行测试:

    一个注释。我将 height 更改为 800,将 width 更改为 650,因为该图有点高。我还添加了一个&lt;center&gt; 标记,将其放置在已发布版本的中心。

    Plotly 还有一个用于嵌入的目标 URL。在这种情况下,它是https://plot.ly/~etpinard/251.embed。 RPubs 似乎并不喜欢这样。你也可以试试borderwidth,看看能不能关掉边框。

    就是这么说:这些图表不会显示在预览中。我认为这是浏览器的限制,因为 RStudio 还不允许发布实时 Web 内容。

    如果您有兴趣并想要一些示例代码,here is the source for a blog post 嵌入了 Plotly 和 ggplot2 图。希望这可以帮助!披露:我为 Plotly 工作。

    更新:2015 年 8 月 21 日

    前往 Plotly 文档查看此答案的 R Markdown 版本。在 R 控制台中打印绘图对象会创建一个在线图形。例如:

    p <- plot_ly(economics, x = date, y = uempmed, filename="r-docs/knitr-example")
    

    如果您使用带有 HTML 输出的 knitr/R Markdown,打印 plotly 对象现在会将绘图作为 iframe 嵌入到 HTML 中。如果您正在使用 R Markdown 编写文档,只需打印 p 即可嵌入绘图。

    您还可以使用宽度和高度代码块参数设置绘图的宽度和高度。例如:{r, height=800} 设置高度。

    如果您使用Plotly Offline with R Studio,那么在 knitr 中打印 plotly 对象还将包括绘制图形所需的 plotly.js 文件:图形在文档内本地呈现。

    要将 knitr 文档转换为独立的 HTML 文件,请使用 knitr::knitmarkdown::markdownToHTML。例如:

    knitr::knit('plotly-report.Rmd', 'plotly-report.md')
    markdown::markdownToHTML('plotly-report.md', 'plotly-report.html')
    

    【讨论】:

    • knitr 文档指出,无论图形是否为 plotly 图形,块标头中指定的图像大小以英寸为单位。你能对此发表评论吗?
    • 如果我有诸如make_plotly() 之类的函数来运行您的p &lt;- plot_ly(...) 命令并执行return(p),则该图将出现在RMarkdown 文档中。但是,如果我从另一个函数(例如run_workflow())中调用make_plotly(),则即使我print 它,该图也不再出现。
    【解决方案2】:

    我必须在我的网址后添加一个“.embed?width=550&height=550”才能使其正常工作。见下文

    ```{r}
    library("knitr")
    library("devtools")
    url<-"https://plot.ly/yourplothere.embed?width=550&height=550" 
    plotly_iframe <- paste("<center><iframe scrolling='no' seamless='seamless' style='border:none' src='", url, 
        "/800/1200' width='800' height='1200'></iframe><center>", sep = "")
    
    ```
    `r I(plotly_iframe)`
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-01
      • 2021-12-21
      • 2019-03-09
      • 2015-08-28
      • 2021-06-07
      • 1970-01-01
      • 2015-02-27
      • 2017-10-30
      相关资源
      最近更新 更多