gpt4 book ai didi

r - 如何在 RMarkdown 表格中嵌入绘图?

转载 作者:行者123 更新时间:2023-12-02 09:39:09 25 4
gpt4 key购买 nike

我正在尝试在 RMarkdown 中生成报告模板。在此报告中,我希望在我正在使用的调查中问题的编号和文本旁边的单元格中绘制一个图。我生成了一些示例图,并在 MS Word 中制作了以下示例。是否可以将 R 生成的绘图放入 RMarkdown 的表格中?

如果是的话,代码会是什么样子?

Desired output

编辑 (9/8/16):我将包含现在的 .Rmd 文件。问题是 html 文件无法编译并显示以下消息。

pandoc: Could not fetch Template1_files/figure-html/score_table-1.png
Template1_files/figure-html/score_table-1.png: openBinaryFile: does not exist (No such file or directory)
Error: pandoc document conversion failed with error 67
Execution halted

Template1是文件名,score_table是 block 标签。

有人愿意帮我诊断问题吗?

<meta charset="utf-8">
---
title: "Untitled"
author: "Xander"
date: "September 7, 2016"
output: html_document
self_contained: false
---

```{r mychunk, fig.show = "hide", echo = FALSE, fig.height=3, fig.width=5}
library(knitr)
library(ggplot2)

# sample data
dat <- data.frame(text = sapply(1:10, FUN = function(x) { paste0(sample(x = LETTERS, size = 15), collapse = "") }))
score_set = replicate(n = 10, expr = {data.frame(other = c("other", "other", "other", "other"), score=sample(1:7,4,TRUE))},simplify = F)

#Plot Function
plotgen<-function(score_set,other,score){
p <- ggplot(score_set, aes(factor(other), score))
p + geom_violin(fill = "#99CCFF") + coord_flip() + scale_x_discrete(name=NULL) +
scale_y_continuous(breaks = round(seq(1, 7, by = 1),1), limits = c(1,7), name=NULL) + theme(axis.text.y=element_blank(),axis.title.y=element_blank(),axis.ticks.y=element_blank(),
panel.grid.major.y = element_line(colour = "black"),
panel.grid.minor = element_blank(),
panel.background = element_rect(fill = "white"),
panel.border = element_rect(colour = "black", fill=NA, size=1)) +
geom_hline(yintercept=sample(1:7,1,TRUE), size = 1.5, colour = "#334466")
}

# generate plots
invisible(lapply(seq_along(score_set), FUN = function(x) {plotgen(score_set[[x]],other,score)}))

out <- cbind(row.names(dat),
as.character(dat$text),
sprintf("![](%s%s-%s.png)", opts_current$get("fig.path"), opts_current$get("label"), 1:nrow(dat)))
kable(out, col.names = c("ID", "Text", ""))
````

最佳答案

您可以执行以下操作(对于基本图,对于ggplot2图 - 请参阅最底部的评论):

```{r mychunk, fig.show = "hide", echo = FALSE, fig.height=3, fig.width=5}
library(knitr)
# sample data
dat <- data.frame(
text = sapply(1:10, FUN = function(x) { paste0(sample(x = LETTERS, size = 15), collapse = "") }),
x1 = rnorm(10),
x2 = rnorm(10, mean = 3),
x3 = rnorm(10, mean = 5))

# generate plots
invisible(apply(dat[, 2:4], MARGIN = 1, FUN = boxplot))

out <- cbind(row.names(dat),
as.character(dat$text),
sprintf("![](%s%s-%s.png)", opts_current$get("fig.path"), opts_current$get("label"), 1:nrow(dat)))
kable(out, col.names = c("ID", "Text", "Boxplot"))
```
  • apply(dat[, 2:4], MARGIN = 1, FUN = boxplot) 使用 x1x2 中的数据生成箱线图> 和x3。由于 fig.show="hide",这些数字已生成但未包含在文档中。
  • sprintf("![](%s%s-%s.png)", opts_current$get("fig.path"), opts_current$get("标签"), 1:nrow(dat )) 生成 Markdown 语法以包含绘图。这类似于 calling include_graphics但优点是我们可以将 Markdown 作为字符向量。
  • 最后,kable 生成表格。

或者,您可以使用 Pandoc 的 pipe_table as shown here 手动生成表。这提供了更多的灵 active 。

上面代码的输出:

Figure in table

Gregor's answer here展示了如何将其应用于 ggplot2 绘图:逐个元素打印 apply 返回的 list,即 invisible(apply(.. .)) 变为 invisible(lapply(apply(...), print))

关于r - 如何在 RMarkdown 表格中嵌入绘图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39362183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com