我在构建使用 plotly
图形作为 htmlwidgets
的包时遇到问题。似乎包含图形和相关资源的支持文件要么从未创建,要么在构建/检查过程中的某个时刻被删除。
我问过相关问题here它使用 buildVignette
来创建小插图。虽然这个问题已经解决,但在进行完整的构建和检查时,使用那里的解决方案不起作用。
我创建了一个最小的包来测试 Github 。如果构建/检查/安装然后查看小插图,就会看到:
事实上,构建的包中不存在任何目录结构或文件。
奇怪的是,这在二月初的真实环境中运行良好(即不是测试包,文档显示了工作小部件 here ),表明某些内容发生了变化,但我无法弄清楚发生了什么变化。
我仔细查看了最新版本的依赖包的组合,这似乎不是问题。我还查看了 r-source
文件 build.R
和 check.R
中的最新更改。唯一相关的更改在此提交中:
commit eed23bae244b17b9366bf7bf6863f6f51f17064d Author: smeyer <smeyer@00db46b3-68df-0310-9c12-caf00c1e9a41> Date: Sat Feb 19 01:10:34 2022 +0000
'R CMD Sweave --clean' no longer removes existing files (PR#18242)
但我不认为这是问题所在。构建/检查代码很复杂,我无法弄清楚这些文件发生了什么。
最佳答案
要将交互式图形嵌入到小插图中,我们可以使用输出 rmarkdown::html_vignette
(html_document
的轻量级版本)来构建它。
---
title: "Test Vignette"
output:
rmarkdown::html_vignette:
toc: yes
vignette: >
%\VignetteIndexEntry{Vignette}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
```{r SetUp, echo = FALSE, eval = TRUE, results = "hide"}
set.seed(13)
suppressPackageStartupMessages(library("knitr"))
suppressPackageStartupMessages(library("plotly"))
opts_chunk$set(eval = TRUE, echo = FALSE)
```
**Test Vignette**
Problem solved?
```{r testFig, results = "show"}
if (!is_latex_output()) {
DF <- data.frame(
x <- rnorm(50),
y <- rnorm(50),
z <- rnorm(50))
plot_ly(
name = "data", DF, x = ~x, y = ~y, z = ~z,
marker = list(size = 2.0)) %>%
add_markers()
}
```
html_vignette
presets与 html_document
略有不同。因此,图形可能看起来很小,可能需要一些手动调整。可以使用 CSS 进行其他样式更改。可以使用找到默认文件
system.file("rmarkdown", "templates", "html_vignette", "resources", "vignette.css", package = "rmarkdown")
虽然它通过了 R CMD 检查,但可能会伤害一些 feelings如果提交给 CRAN:
neither data nor documentation should exceed 5MB
关于r - 包构建/检查删除 htmlwidget 派生文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71832517/