循环并保存ggplot

时间:2017-08-22 15:27:22

标签: r loops ggplot2

我有以下代码生成图表。我想循环这个代码并为y =(当前是XYZ)输入不同的值。对于每个ggplot图,我想保存输出。例如,第一循环将是y = XYZ,第二循环y = ABC,第三循环y = QRS等。

UK<-ggplot(Diff, aes(x = FactSet.Fund.Code  , y = XYZ, colour = Fund.Manager.x))
UK<- UK + geom_point(data = subset(Diff,DeskName.x=="UK Equities"), size = 6)
UK<- UK + theme(axis.text = element_text(angle = 90))

2 个答案:

答案 0 :(得分:0)

这应该有效。肖恩完全正确aes_string让它发挥作用。 aes通常使用称为非标准评估的内容(如果您不熟悉,我建议您阅读here)。出于您的目的,这意味着您只能将下面的循环中的i直接传递给aes,因为aes会将其解释为列,而不是评估哪些信息{{ 1}}包含。 i只允许您将列的名称作为字符串传递。然后你可以在循环中单独保存每个绘图。

aes_string

答案 1 :(得分:0)

通常ggplots保存在列表中,请尝试以下:

Y_list = c('XYZ', 'ABC', 'QRS')
g_list = list()
for (yi in Y_list) {
    UK<-ggplot(Diff, aes_string(x = 'FactSet.Fund.Code', y = yi, colour = 'Fund.Manager.x'))
    UK<- UK + geom_point(data = subset(Diff,DeskName.x=="UK Equities"), size = 6)
    UK<- UK + theme(axis.text = element_text(angle = 90))
    g_list[[yi]] = UK
}