我的包产生了许多图表,通常一次多于一个。
使用x11
或windows
设备没有问题,knitr
使用包含的图片构建小插图。
但是,提交到CRAN存储库的要求是使用dev.new
进行平台无关的绘图。如果我将x11
或windows
替换为dev.new
,则我的插图中不会显示任何图片。
有解决方案吗?起初我认为这与在RStudio中绘图相关,但使用新参数dev.new(noRStudioGD = FALSE)
没有帮助。另外,从命令行构建软件包并没有解决问题。
干杯,
汤姆
(Windows 7 x64) (R 3.1.1) (RStudio 0.98.507)
答案 0 :(得分:2)
简短的回答是,你根本不使用dev.new()
(或dev.off()
或dev.whatever ......)。如果您想要更长的答案,请提供一个最小的可重复示例,演示您的问题究竟是什么。
答案 1 :(得分:0)
我遇到了同样的困难。 这是一种有效的方法:
p1 <- function(x, knitr=FALSE){
plot(x)
if(!knitr) dev.new()
plot(x^2)
}
参数knitr=
仅在 中用于小插图构建。
现在,在.Rnw
中的/vignettes
文件中添加了类似的内容:
%\VignetteEngine{knitr::knitr}
%\VignetteIndexEntry{p1}
\documentclass{article}
\begin{document}
<<setup, include=FALSE>>=
library("knitr")
### Set global chunk options
opts_chunk$set(eval=TRUE,
## text results
echo=TRUE,
results=c('markup', 'asis', 'hold', 'hide')[1],
## plots
fig.path=c('figure', 'figure/minimal-')[1],
fig.keep=c('high', 'none', 'all', 'first', 'last')[1],
fig.align=c('center', 'left', 'right', 'default')[1],
fig.show=c('hold', 'asis', 'animate', 'hide')[1],
dev=c('pdf', 'png', 'tikz')[1],
fig.width=7, fig.height=7, #inches
fig.env=c('figure', 'marginfigure')[1],
fig.pos=c('', 'h', 't', 'b', 'p', 'H')[1]
)
@
<<plot1>>
library("myPackage")
x <- seq(10)
p1(x, knitr=TRUE)
@
\end{document}