正如标题所示,我想在 Github Pages 上创建交互式 R Markdown 文件的帖子(意味着它嵌入了 Shiny 应用程序)。这可以在 Github Pages 中实现吗?如果是这样,我该怎么办?如果没有,托管交互式 RMD/Shiny 页面的最佳(免费)方式是什么?
虽然不可能在 Github 页面上托管成熟的 Shiny 应用程序(事实上,正如 @Gregor 所建议的,shinyapps.io 对此很有用),但 Shiny 的开发人员一直在努力使某些功能完全在客户端上运行-通过 htmlwidgets.
这是一个在 Github 页面上运行的简单示例:
自述文件.Rmd
## Example of displaying htmlwidgets on a Github pages site
```{r}
# Source: http://www.htmlwidgets.org/showcase_plotly.html
library(plotly)
p <- ggplot(data = diamonds, aes(x = cut, fill = clarity)) +
geom_bar(position = "dodge")
ggplotly(p)
```
渲染的 HTML
(实时版本:Github 页面 htmlwidget 演示)
对于更复杂的交互,包括完全在客户端的小部件之间的通信,请查看来自 UserR 的 Joe Cheng 最近的串扰演示! 2016.
shinylive
包在 Github 页面上托管 Shiny 应用程序
文档页面:
部署 Shiny 的传统方式涉及单独的服务器和客户端:服务器运行 Python 和 Shiny,客户端通过 Web 浏览器连接。每个客户端只要使用该应用程序,就会保持开放的 Websocket 连接。但是
当使用 Shinylive 部署应用程序时,Python 和 Shiny 在 Web 浏览器中运行:浏览器实际上既是应用程序的客户端又是服务器。有一个提供文件服务的 Web 服务器,但它不运行 Python 或 Shiny — 它可以是一个“哑”静态 Web 服务器。这意味着您可以通过 GitHub 页面托管 Shiny 应用程序。
高级工作流程示例
Github页面。首先,按照以下步骤创建您的应用程序:
shiny create myapp
这将创建应用程序文件 - app.py
,并在
myapp
文件夹下使用默认的shinylive示例:
.
└── myapp
└── app.py
接下来,更新您的应用程序并使用 shiny static
命令构建网站:
shiny static myapp docs
我们将应用程序文件夹 - myapp
映射到网站文件夹
docs
(Github Pages 需要将网站名称设置为
docs
)。这将添加以下文件夹:
.
├── docs
│ ├── edit
│ └── shinylive
│ ├── jquery.terminal
│ │ ├── bin
│ │ ├── css
│ │ └── js
│ ├── pyodide
│ │ └── fonts
│ ├── pyright
│ └── shiny_static
│ └── edit
└── myapp
您可以使用以下命令在本地测试您的应用程序:
python3 -m http.server --directory docs 8008
并使用 http://localhost:8008/
在浏览器上打开。
注意: 任何时候更改应用程序时,都必须运行 shiny static myapp docs
来更新
docs
文件夹。完成应用程序后,提交并推送更改并在 Github 上打开存储库,然后转到
Settings
选项卡并选择
Pages
选项(蓝色框):
接下来,在
Build and deployment
下选择
Deploy from branch
选项(绿色框),然后在分支选项下选择要从中部署的分支和
docs
文件夹(紫色框)。该网站应在几分钟后准备就绪,网址如下:
YOUR_GITHUB_USER_PROFILE.github.io/YOUR_REPO_NAME