gpt4 book ai didi

r - 编写一个返回 ggplot2 图向量的函数

转载 作者:行者123 更新时间:2023-12-04 12:34:20 25 4
gpt4 key购买 nike

我有这个项目,我想为各种不同的数据框制作相同的图。我想我可以通过编写一个函数来做到这一点,该函数将一个数据框作为输入,然后返回一个绘图向量——像这样:

df <- data.frame(x = runif(100), y = runif(100))
plot.list <- function(df){
g1 <- qplot(x, y, data = df)
g2 <- qplot(x, x + y, data = df)
c(g1, g2)
}

我想这样做:
print(plot.list(df)[1])

得到与我所做的相同的结果:
print(qplot(x,y, data = df))

正如您将看到的,这不起作用——它似乎打印出绘图所基于的数据框 (?)。我的猜测是,我对对象在 R 中的工作方式或 ggplot2 绘图的性质有一些非常基本的误解。感谢您的任何建议(或者可能是关于做我想做的事情的更好方法的建议)。

最佳答案

有几种方法可以处理此类事情,但您可能不知道的一个技巧是 ggplot2具有用于此类目的的特殊运算符,即使用不同的数据框创建相同的图形:

d1 <- data.frame(x=1:10,y=rnorm(10))
d2 <- data.frame(x=20:29,y=runif(10))
p <- ggplot(data = d1, aes(x = x, y = y)) + geom_point()
print(p)
print(p %+% d2)

所以 %+%运算符(operator)将插入数据框 d2进入由 p 定义的情节结构.这样您就可以创建一次绘图,然后将其应用于不同的数据框。

为了更直接地解决您在问题中概述的用途,一旦您创建了第一个图, p ,您可以 lapply沿着数据框列表的图结构:
d3 <- data.frame(x = 1:10, y = rexp(10))
rs <- lapply(list(d1,d2,d3),FUN = function(x,p){p %+% x},p=p)

然后您将三个图存储在 rs 中.

关于r - 编写一个返回 ggplot2 图向量的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7654611/

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