根据一个PDF

时间:2018-04-25 20:16:07

标签: r pdf

我真的是初学者,并且已经在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窗口中生成了图表,我可以手动保存并复制到单个文件中 - 但是是否有一个代码可以将这些条形图自动保存在一个文件中?它可以保存这些已经生成的条形图,也可以将代码重写为循环绘制数字的函数

1 个答案:

答案 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()