Как включить сюжет в R Studio Presentations (Rpres)
Как включить сюжетный сюжет в файл 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>
Но я надеюсь на более элегантное решение, которое не использует никаких дополнительных файлов.
2 ответа
Ниже приведен минимальный пример того, как включить граф plot_ly в презентацию ioslides, поэтому он не совсем отвечает на вопрос для 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)
```
Была такая же проблема. Когда я казнил slidify(index.Rmd)
было сообщение о том, что PhantomJS not found
и предлагает мне бежать webshot::install_phantomjs()
, Так я и сделал, и ошибка исчезла. Однако я до сих пор не получил сюжетно-интерактивной карты. Это было пустым.
Также попробовал следующий код в терминале, который работал для некоторых людей, но не для меня. Я получил вывод html-файла, и там до сих пор не было карты. Это из этого поста. Это может сработать для вас.
Rscript -e "library(knitr); library(rmarkdown);
rmarkdown::render('index.Rmd', output_file='index.html')"
Я уверен, что это заговор. Потому что ggplots работает нормально.
Обновить:
Переустановил / обновил пакет wetshot, запустив install.packages("webshot")
затем побежал webshot::install_phantomjs()
опять то library(knitr); library(rmarkdown); rmarkdown::render('index.Rmd', output_file='index.html')
, Это сработало. HTML-файл имеет графическую карту, хотя он не отображается в окне предварительного просмотра Knitr.
Обновить:
Добавив следующий код, я могу отобразить карту по сторонам. Ссылайтесь на этот пост.
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>')