2017-08-22 2 views
0

Ich habe den folgenden Code, der eine Grafik erzeugt. Ich möchte diesen Code umschlingen und verschiedene Werte für y = eingeben (was momentan XYZ ist). Für jedes ggplot-Diagramm möchte ich die Ausgabe speichern. Zum Beispiel wäre die erste Schleife y = XYZ, die zweite Schleife y = ABC, die dritte Schleife y = QRS etc.Schleife und speichern ggplot

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)) 
+1

Vielleicht brauchen aes_string Sie eher als aes, da Sie Looping. Das Speichern von Plots hängt davon ab, ob Sie separate Png-Dateien oder eine PDF-Datei mit mehreren Seiten erstellen möchten. –

Antwort

0

Normalerweise ggplots in einer Liste gespeichert werden, versuchen Sie unter:

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 
} 
+0

Danke, erste Lösung sieht gut aus, obwohl ich die Handlung nicht speichern möchte (meine Missverständlichkeit!) Ich möchte es nur einem Objekt zuweisen. Also, kurz vor dem Ggsave würde die erste Schleife das Objekt mit dem Plot als UKXYZ bezeichnen, die zweite Schleife würde UKABC heißen, wenn du mich bekommst? – user8491385

+0

@ user8491385 Ich habe dich missverstanden, bitte versuche die aktualisierte Antwort. –

0

Dies sollte funktionieren. Sean ist völlig richtig über aes_string macht es funktioniert. aes verwendet normalerweise etwas, das nicht standardmäßige Auswertung genannt wird (wenn Sie nicht vertraut sind, würde ich empfehlen, here zu lesen). Für Ihre Zwecke, was es bedeutet, dass Sie i in der Schleife nicht direkt direkt an AES übergeben können, weil aes wird es als eine Spalte interpretieren, anstatt zu bewerten, welche Informationen i enthält. aes_string lässt Sie einfach den Namen der Spalte als Zeichenfolge übergeben. Dann können Sie einfach jedes Diagramm einzeln in Ihrer Schleife speichern.

library(ggplot2) 


code_list <- list("ABC","XYZ") 

Diff <- data.frame(FactSet.Fund.Code = as.character(1:10), 
        XYZ = rnorm(1:10), ABC = rnorm(1:10)) 

for(i in code_list){ 
    ggplot(Diff, aes_string(x = "FactSet.Fund.Code", y = i)) + 
       geom_point(size = 6) 
    ggsave(paste0(i,".png")) 
} 
Verwandte Themen