我真的是初学者,并且已经在Stackoverflow上看到了相同数据集中的图表的答案,但没有基于多个集合的图表。 我有一个包含100个小数据集(100幅绘画)的数据集,这些绘画被评为1-4个参与者。所以我每幅画得到一个情节,我希望它们都保存在一个PDF中。对于每个情节,我怎样才能一次性或一次性地完成这项工作?
数据集如下所示:
painting_no measurement participant
1 3 1
1 4 2
1 3 3
1 2 4
... ... ...
我首先创建了这样的小数据集:
pai1 <- subset(SeaAWIDE, SeaAWIDE$painting_no =="1")
pai2 <- subset(SeaAWIDE, SeaAWIDE$painting_no =="2")
pai3 <- subset(SeaAWIDE, SeaAWIDE$painting_no =="3")
pai4 <- subset(SeaAWIDE, SeaAWIDE$painting_no =="4")
只有在创建小数据集之后,我才会创建这样的条形图:
barplot(table(pai1$measurement), ylab='Frequency', ylim=c(0,30), main= 'Painting 1 ')
barplot(table(pai2$measurement), ylab='Frequency', ylim=c(0,30), main= 'Painting 2 ')
barplot(table(pai3$measurement), ylab='Frequency', ylim=c(0,30), main= 'Painting 3 ')
barplot(table(pai4$measurement), ylab='Frequency', ylim=c(0,30), main= 'Painting 4 ')
这确实在r窗口中生成了图表,我可以手动保存并复制到单个文件中 - 但是是否有一个代码可以将这些条形图自动保存在一个文件中?它可以保存这些已经生成的条形图,也可以将代码重写为循环绘制数字的函数
答案 0 :(得分:0)
pdf
函数将图形输出重定向到指定文件。您使用dev.off
关闭设备并将输出再次发送到R窗口。代码如下所示:
pdf("path\filename.pdf", height = 8, width = 8) # change height and width as needed for good results
barplot(table(pai1$measurement), ylab='Frequency', ylim=c(0,30), main= 'Painting 1 ')
barplot(table(pai2$measurement), ylab='Frequency', ylim=c(0,30), main= 'Painting 2 ')
# ...
dev.off()
但是你可以通过将所有内容放在一个命令中来大大简化这一过程。
painting_data <- split(SeaAWIDE, SeaAWIDE$painting_no)
library(purrr) # walk function
pdf("path\filename.pdf", height = 8, width = 8)
walk(1:length(painting_data), function(i) {
barplot(
table(painting_data[[i]]$measurement),
ylab='Frequency',
ylim=c(0,30),
main= paste('Painting',i)
)
})
dev.off()