如何使用函数获得的多个图在 R 中创建演示文稿?
How to create a presentation in R with several plots obtained by a function?
我创建了一个函数,可以根据列表为您提供所需的地块数量。
这是我创建的示例。
list_genes <- c("GEN1", "GEN2", "GEN3")
myfunction <- function(x,y){
for(gene in list_genes){
# This to draw both plots
par(mfrow=c(2,1))
stripchart(x, method="jitter", vertical=F, main=paste0("Plot of ", gene))
hist(x, main=paste0("Plot of ", gene))
}
}
myfunction(x=c(1,5,6,2,4,30,23,12,45))
我最后的 objective 是用我从我的函数生成的所有图表(自动)创建一个演示文稿。
但是,如果我尝试创建一个 ioslides_presentation
,它们不会出现(只有第一个和第二个的一点点)。
---
title: "My presentation"
output: ioslides_presentation
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
```
## PLOTS
```{r}
list_genes <- c("GEN1", "GEN2", "GEN3")
myfunction <- function(x,y){
for(gene in list_genes){
# This to draw both plots
par(mfrow=c(2,1))
stripchart(x, method="jitter", vertical=F, main=paste0("Plot of ", gene))
hist(x, main=paste0("Plot of ", gene))
}
}
myfunction(x=c(1,5,6,2,4,30,23,12,45))
```
该代码是我原始功能的一个小示例,但足以向您展示我的问题。我试图将绘图保存到对象中,但由于它是基于 R 的,所以我不能(或者至少,它不能正常工作)。我知道我可以用 ggplot2
做到这一点,但是,我想在这里问一下,以防万一有人知道如何在这种情况下进行演示,然后再更改完整的原始功能。
有谁知道怎么解决的吗?
非常感谢
此致
有几种方法可以获得它。恕我直言,最简单的方法是从函数中调用 mfrow
或 mfcol
并为所有绘图创建一个全局调用,例如:
---
title: "My presentation"
output: ioslides_presentation
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
```
## PLOTS
```{r}
list_genes <- c("GEN1", "GEN2", "GEN3")
myfunction <- function(x,y){
for(gene in list_genes){
stripchart(x, method = "jitter", vertical = FALSE,
main = paste0("Plot of ", gene))
hist(x, main = paste0("Plot of ", gene))
}
}
par(mfcol = c(2, 3))
myfunction(x = c(1, 5, 6, 2, 4, 30, 23, 12, 45))
```
补充说明:在R代码中最好使用FALSE
而不是F
。 FALSE
是保留字,而 F
是“脆弱的”,因为它可以重新定义。
感谢@tpetzoldt 和这个 post,我找到了我需要的东西!
我不得不稍微更改函数并在循环内创建演示文稿的 headers。
解决方法如下:
---
title: "Create a presentation with several plots"
output:
ioslides_presentation
---
```{r, echo=FALSE}
myfunction <- function(x, gene){
# This to draw both plots
par(mfrow=c(2,1))
stripchart(x, method="jitter", vertical=F, main=paste0("Plot of ", gene))
hist(x, main=paste0("Plot of ", gene))
}
```
```{r, echo=FALSE}
list_genes <- c("GEN1", "GEN2", "GEN3")
```
```{r, echo = FALSE, results = "asis"}
for(gene in list_genes){
cat("\n\n## Plot of ", gene, "\n\n")
myfunction(x=c(1,5,6,2,4,30,23,12,45), gene)
}
```
我创建了一个函数,可以根据列表为您提供所需的地块数量。
这是我创建的示例。
list_genes <- c("GEN1", "GEN2", "GEN3")
myfunction <- function(x,y){
for(gene in list_genes){
# This to draw both plots
par(mfrow=c(2,1))
stripchart(x, method="jitter", vertical=F, main=paste0("Plot of ", gene))
hist(x, main=paste0("Plot of ", gene))
}
}
myfunction(x=c(1,5,6,2,4,30,23,12,45))
我最后的 objective 是用我从我的函数生成的所有图表(自动)创建一个演示文稿。
但是,如果我尝试创建一个 ioslides_presentation
,它们不会出现(只有第一个和第二个的一点点)。
---
title: "My presentation"
output: ioslides_presentation
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
```
## PLOTS
```{r}
list_genes <- c("GEN1", "GEN2", "GEN3")
myfunction <- function(x,y){
for(gene in list_genes){
# This to draw both plots
par(mfrow=c(2,1))
stripchart(x, method="jitter", vertical=F, main=paste0("Plot of ", gene))
hist(x, main=paste0("Plot of ", gene))
}
}
myfunction(x=c(1,5,6,2,4,30,23,12,45))
```
该代码是我原始功能的一个小示例,但足以向您展示我的问题。我试图将绘图保存到对象中,但由于它是基于 R 的,所以我不能(或者至少,它不能正常工作)。我知道我可以用 ggplot2
做到这一点,但是,我想在这里问一下,以防万一有人知道如何在这种情况下进行演示,然后再更改完整的原始功能。
有谁知道怎么解决的吗?
非常感谢
此致
有几种方法可以获得它。恕我直言,最简单的方法是从函数中调用 mfrow
或 mfcol
并为所有绘图创建一个全局调用,例如:
---
title: "My presentation"
output: ioslides_presentation
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
```
## PLOTS
```{r}
list_genes <- c("GEN1", "GEN2", "GEN3")
myfunction <- function(x,y){
for(gene in list_genes){
stripchart(x, method = "jitter", vertical = FALSE,
main = paste0("Plot of ", gene))
hist(x, main = paste0("Plot of ", gene))
}
}
par(mfcol = c(2, 3))
myfunction(x = c(1, 5, 6, 2, 4, 30, 23, 12, 45))
```
补充说明:在R代码中最好使用FALSE
而不是F
。 FALSE
是保留字,而 F
是“脆弱的”,因为它可以重新定义。
感谢@tpetzoldt 和这个 post,我找到了我需要的东西!
我不得不稍微更改函数并在循环内创建演示文稿的 headers。
解决方法如下:
---
title: "Create a presentation with several plots"
output:
ioslides_presentation
---
```{r, echo=FALSE}
myfunction <- function(x, gene){
# This to draw both plots
par(mfrow=c(2,1))
stripchart(x, method="jitter", vertical=F, main=paste0("Plot of ", gene))
hist(x, main=paste0("Plot of ", gene))
}
```
```{r, echo=FALSE}
list_genes <- c("GEN1", "GEN2", "GEN3")
```
```{r, echo = FALSE, results = "asis"}
for(gene in list_genes){
cat("\n\n## Plot of ", gene, "\n\n")
myfunction(x=c(1,5,6,2,4,30,23,12,45), gene)
}
```