在R Markdown中嵌入Plotly输出

7
有一篇博客文章描述了如何将Plotly API的R输出嵌入到R Markdown中。我刚使用这个代码为HTML文档创建iframe。
当我在R Studio中预览时,没有错误消息并且在HTML文档中创建了iframe。然而,它是空的。显然它无法加载内容。我之前没有在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)`
2个回答

7
我们第一次发布RPub时也遇到了同样的问题。这是您代码在已发布的 RPub 中的链接
一旦在 RPubs.com 上发布而不是预览,图形应该会显示出来。您可以通过使用 RPubs 中的“在浏览器中打开”选项进行测试:RPub 注意,我将height更改为800和width更改为650,因为该图有点高。我还添加了<center>标签,以将其置于发布版本的中心。
Plotly还有一个目标URL用于嵌入。在这种情况下,它是https://plot.ly/~etpinard/251.embed。但RPubs似乎不喜欢那个URL。您还可以尝试调整borderwidth以查看是否可以关闭边框。
这就是说:图形不会在预览中显示。我认为这是浏览器的限制,因为RStudio不允许发布实时Web内容(但)。如果您感兴趣并需要一些示例代码,请参考此博客文章源代码,其中嵌入了Plotly和ggplot2图形。希望这有所帮助!声明:我为Plotly工作。
更新时间:2015年8月21日
请前往Plotly文档查看此答案的R Markdown版本。在R控制台中打印plotly对象会创建在线图形。例如:
p <- plot_ly(economics, x = date, y = uempmed, filename="r-docs/knitr-example")

如果您正在使用knitr/R Markdown生成HTML格式的文档,将plotly对象打印出来会将图表嵌入到HTML中作为iframe。如果您正在使用R Markdown写文档,只需打印p即可嵌入图表。
您还可以使用width和height代码块参数设置图表的宽度和高度。例如:{r, height=800}设置高度。
如果您正在使用离线版Plotly与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 图形,在代码块头中指定的图像大小都是以英寸为单位的。您对此有何评论? - Frank Harrell
1
如果我有一个函数,比如make_plotly(),它运行你的p <- plot_ly(...)命令并执行return(p),那么图表将出现在RMarkdown文档中。然而,如果我从另一个函数(如run_workflow())中调用make_plotly(),那么即使我使用print命令,图表也不再出现。 - user5359531

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)`

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接