【发布时间】:2015-10-12 09:41:04
【问题描述】:
我有 500 个组的数据,每个组有不同的学生数量和他们的分数。我想为每个组制作单独的条形图(在 R 中),这样学生应该在 x 轴上,他们的分数在 y 轴上。我尝试使用 ggplot2 制作,但它为所有 500 个组生成单个条形图。我的数据采用以下形式:知道如何为 R 中的每个组分别制作它吗?
【问题讨论】:
-
给我们一些可重现的数据,我们将向您展示如何在基础 R 中做到这一点。
我有 500 个组的数据,每个组有不同的学生数量和他们的分数。我想为每个组制作单独的条形图(在 R 中),这样学生应该在 x 轴上,他们的分数在 y 轴上。我尝试使用 ggplot2 制作,但它为所有 500 个组生成单个条形图。我的数据采用以下形式:知道如何为 R 中的每个组分别制作它吗?
【问题讨论】:
library(plyr)
library(ggplot2)
dataset <- expand.grid(Group = 1:3, Student = LETTERS[1:3])
dataset$Score <- runif(nrow(dataset), max = 100)
dlply(dataset, ~Group, function(x){
ggplot(x, aes(x = Student, y = Score)) + geom_bar(stat = "identity")
})
【讨论】:
我们可以使用base R。我们split数据集通过'Group'列创建list,循环遍历list元素的names,分别为每个组创建barplot并保存为png文件。
lst <- split(df1[-1], df1$Group)
invisible(lapply(names(lst), function(nm1) {
png(paste0('barplot_', nm1, '.png'))
barplot(setNames(lst[[nm1]]$Score, lst[[nm1]]$Student),
main=paste0('barplot of Group', nm1))
dev.off()
}))
注意:标题 (main=) 和文件名可以相应更改。
【讨论】: