【发布时间】:2026-02-06 07:15:01
【问题描述】:
我创建了一个函数,它包含两种类型的图,它会给你一张图像。但是,此图像的标题会根据一个列表而变化,因此,您将有多个绘图但标题不同。 (原始函数会更改绘图使用的数字,但本质上是我需要的)。
这是我创建的示例。
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))
plot(x,y, main=paste0("Plot of ", gene))
hist(x, main=paste0("Plot of ", gene))
}
}
myfunction(x=c(1,5,6,2,4),y=c(6,10,53,1,5))
但是,由于我需要使用我生成的所有绘图创建一个演示文稿,我发现这个post 有一个解决方案,可以在 for 循环中为多个绘图创建幻灯片。这是我想要的,但为此,我需要将我的图保存到列表/变量中。
object <- myfunction(x=c(1,5,6,2,4),y=c(6,10,53,1,5))
> object
NULL
我找到了这个post(它为您提供了一个有趣的解决方案)但是,这些图仍然无法保存到一个对象中。
calling_myfunc <- function(){
myfunction(x=c(1,5,6,2,4),y=c(6,10,53,1,5))
}
calling_myfunc()
object <- calling_myfunc()
> object
NULL
我的最终目标是(自动)创建一个演示文稿,其中包含我从我的函数生成的所有图。正如我在post 中看到的那样。但我需要将图保存到变量中。
谁能帮我解决这个问题?
提前非常感谢
【问题讨论】:
-
不幸的是,基本 R 绘图并没有一个很好的机制来保存绘图对象(有一种通过
recordPlot的方法,如您链接的帖子中所示,但它相当复杂)。相比之下,“ggplot2”使这变得微不足道。因此,我强烈建议您使用“ggplot2”。 -
@Konrad Rudolph 我试过
recordPlot,但我真的不知道它是如何工作的。它再次生成图,但显示了第一个图。在我添加的示例中,它显示了 3 个图,然后是一个空图像,然后是第三个图。我真的不知道它是如何工作的。在我的原始函数中,我使用函数 stripchart() 和 hist()。我不知道基础 R 绘图在保存对象时存在问题...
标签: r function plot histogram ioslides