【问题标题】:Export Graph in R, and also display it in knitr在 R 中导出 Graph,并在 knitr 中显示
【发布时间】:2014-03-03 13:04:58
【问题描述】:

我正在使用 knitr 并希望我的 rmd 文件在运行时在图形/文件夹中生成一个 eps 文件。我发现了这个问题: Export a graph to .eps file with R 可以满足我的要求,但不会在 knitr 生成的网页中显示图表,大概是因为 postscript 命令只是将绘制的任何内容路由到您提供的文件中。我想显示一个图表并将其保存到文件中。目前我的代码是这样的:

```{r}
setEPS()
postscript("~/File/Path/To/Figures/Folder/Figure.eps")
par(mar=c(4, 4, 4, 10))
barplot(prop.table(t(testtable[2:4]), 2), names=testtable$Group, legend=c(colnames(testtable)[2:4]), args.legend=list(x=7, y=1), xlab="Groups", ylab="Percentage of Answers")
dev.off()
``` 

在knitr中,这会产生

## pdf 
##   2

我必须在 dev.off() 之后运行相同的条形图命令才能在 knitr 中生成任何内容。

我可以想到两种策略: 1) 将图形路由到文件和 knitr。 2) 将 r 命令保存为变量,然后在 dev.off() 之前和之后运行变量包含的任何内容。

我不知道该怎么做。


原来有一个 3) 获取 knitr 将情节保存为 eps。 我不喜欢这样做,因为文件被保存为 unnamed_chunk_x.png 并且我希望它们被命名。事实证明,您是否可以通过编辑 {r} ->{r name-of-your-chart}

来命名它们

【问题讨论】:

    标签: r knitr


    【解决方案1】:

    我会这样做,

    opts_chunk$set(dev=c('png','postscript'))
    

    自动生成每个图形的两个版本(一个 png,一个 eps)。正如@Tyler 评论的那样,您也可以逐块而不是全局选项来执行此操作。

    【讨论】:

    • 谢谢 - 这到底是做什么的?
    • 我认为设备名称实际上是 postscipt 用于 eps 输出。请注意,如果您不希望全局设置选项,也可以为单个块(在其标题行中)设置 dev 选项。
    • 太棒了,这大大简化了事情!
    • 请注意,许多 knit 参数是矢量化的;例如,您可以给 width=c(10, 8) 以获得不同大小的 png 和 eps 输出。
    猜你喜欢
    • 2013-05-10
    • 1970-01-01
    • 2012-03-07
    • 2015-03-08
    • 1970-01-01
    • 2022-11-22
    • 1970-01-01
    • 2018-06-13
    • 2018-01-24
    相关资源
    最近更新 更多