如何在Rpres文件中包含绘图? 如果你像在普通的Rmd文件中那样做
Basic Plot
========================================================
```{r, echo=FALSE}
library(plotly)
plot_ly(economics, x = date, y = unemploy / pop)
```
我提出的解决方案,它使用了Markdown可以包含HTML的可能性:
Basic Plot
========================================================
```{r, results='hide', echo=FALSE}
library(plotly)
p = plot_ly(economics, x = date, y = unemploy / pop)
htmlwidgets::saveWidget(as.widget(p), file = "demo.html")
```
<iframe src="demo.html" style="position:absolute;height:100%;width:100%"></iframe>
但我希望有一个更优雅的解决方案,不使用任何其他文件。
答案 0 :(得分:3)
以下是关于如何在ioslides演示文稿中包含plot_ly图的最小示例,因此它不能完全回答Rpres的问题,但提供了另一种选择。
第一张幻灯片显示从ggplot转换为plot_ly的图,保留了ggplot样式。 第二张幻灯片直接使用plot_ly显示一个图。
---
title: "Plot_ly demo"
date: "8 December 2016"
output: ioslides_presentation
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
```
## A simple plot_ly
```{r, fig.align='center', message = FALSE}
library(plotly)
df <- data.frame(x = 1:10, y = (1:10)^2)
p <- ggplot(df, aes(x = x, y = y)) + geom_line() + labs(x = "X", y = "Y", title = "X and Y")
ggplotly(p)
```
## Another simple plot_ly
```{r, echo = FALSE, fig.align = 'center', message = FALSE}
plot_ly(df, x = x, y = y)
```
答案 1 :(得分:-1)
有同样的问题。当我执行slidify(index.Rmd)
时,有一条消息说PhantomJS not found
,并建议我运行webshot::install_phantomjs()
。所以我做到了,错误消失了。但是我仍然没有绘图交互地图输出。这是空白。
也尝试在终端中使用以下代码,该代码对某些人有效,但对我而言无效。我得到了html文件输出,但仍然没有地图。它来自此post。它可能对您有用。
Rscript -e "library(knitr); library(rmarkdown);
rmarkdown::render('index.Rmd', output_file='index.html')"
我确定它是密谋。因为ggplots可以正常工作。
更新:
通过运行install.packages("webshot")
,然后再次运行webshot::install_phantomjs()
,然后运行library(knitr); library(rmarkdown); rmarkdown::render('index.Rmd', output_file='index.html')
,重新安装/更新了wetshot软件包。有效。该html文件具有一个可绘制的地图,尽管它未出现在Knitr预览窗口中。
更新:
通过添加以下代码,我可以在侧面显示地图。请参阅此post。
htmlwidgets::saveWidget(as_widget(p), "p.html")
cat('<iframe src="./p.html" width=100% height=100% allowtransparency="true"> </iframe>')
完整上下文将在下面列出。
library(plotly)
cities <- readRDS("D:/R/data/cn_cities.rds")
cities <- cities[1:50,]
geo <- list(
scope = 'asia',
projection = list(type = 'Mercator'),
showland = TRUE,
landcolor = toRGB("gray85"),
countrycolor = toRGB("white"),
subunitcolor = toRGB("white"),
countrywidth = 1,
subunitwidth = 1)
p <- plot_geo(cities,
locationmode='CHN',
sizes=c(1, 200)) %>%
add_markers(x=~lng, y=~lat,
size=~sqrt(population),
hoverinfo="text",
text=~paste(city, "<br />", population)) %>%
layout(title='',
geo=geo)
htmlwidgets::saveWidget(as_widget(p), "p.html")
cat('<iframe src="./p.html" width=100% height=100% allowtransparency="true"> </iframe>')