gpt4 book ai didi

r - 使用 ggplot2 在循环中创建绘图

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

我必须用相同的 View 生成 250 个图。

我的示例数据集:

df <- data.frame(name = c("john","alex","mike","dennis","alex"),
expenses = c("10","12","15","8","2"),
type = c("food","rent","rent","food","food"))

我想要条形图,其中包含单个图中每个名称的费用。 “亚历克斯”的情节将如下所示:
selected.name <- "alex"
df1 <- subset(df, name == selected.name)
ggplot(data = df1, aes(type, expenses)) + geom_bar()

现在我想使用一个循环为 df 中的每个名称绘制相同的图。我尝试使用 for 循环将上面的绘图代码作为源文件运行。但是我无法将 name 变量传递给源文件,以便它为每个名称绘制图形。现在我只从 for 循环中得到一张图。

最佳答案

回答您的原始问题。要使用标准 R 做到这一点:

doPlot = function(sel_name) {
dum = subset(df, name == sel_name)
ggobj = ggplot(data = dum, aes(type, expenses)) + geom_bar()
print(ggobj)
ggsave(sprintf("%s.pdf", sel_name))
}
lapply(unique(df$name), doPlot)

通过这种方式,您最终会得到大量名为 Adam.pdf 等的 pdf 文件。然后您可以使用 pdftk(pdf 工具包)将这些文件放在一个文档中。我仍然更喜欢使用例如更好的解决方案刻面或不同类型的情节。

使用分面不是更好吗?鉴于您的示例,代码将是:
ggplot(data = df, aes(type, expenses)) + 
geom_bar() + facet_wrap(~name)

这导致了以下情节:

enter image description here

也许对于 250 个名称和更多变量,这可能是一个问题。但我还是会考虑刻面。

关于r - 使用 ggplot2 在循环中创建绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9111655/

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