Eine Option ist nur Grundstück zu, sagen wir, sechs Ebenen der individual
zu einem Zeitpunkt, den gleichen Code jetzt Sie verwenden verwenden. Sie müssen es nur mehrmals wiederholen, einmal für jede Teilmenge Ihrer Daten. Sie haben keine Beispieldaten zur Verfügung gestellt, so ist hier ein Beispiel der Baseball
Datenrahmen mit:
library(ggplot2)
library(vcd) # For the Baseball data
data(Baseball)
pdf("baseball.pdf", 7, 5)
for (i in seq(1, length(unique(Baseball$team87)), 6)) {
print(ggplot(Baseball[Baseball$team87 %in% levels(Baseball$team87)[i:(i+5)], ],
aes(hits86, sal87)) +
geom_point() +
facet_wrap(~ team87) +
scale_y_continuous(limits=c(0, max(Baseball$sal87, na.rm=TRUE))) +
scale_x_continuous(limits=c(0, max(Baseball$hits86))) +
theme_bw())
}
dev.off()
Der obige Code eine PDF-Datei mit vier Seiten von Plots produzieren, die jeweils mit sechs Facetten auf einer Seite. Sie können auch vier separate PDF-Dateien, eine für jede Gruppe von sechs Facetten erstellen:
for (i in seq(1, length(unique(Baseball$team87)), 6)) {
pdf(paste0("baseball_",i,".pdf"), 7, 5)
...ggplot code...
dev.off()
}
Eine weitere Option, wenn Sie mehr Flexibilität benötigen, ist ein separates Grundstück für jede Ebene zu schaffen (das heißt, jeder eindeutige Wert) der facettierenden Variablen und speichern Sie alle einzelnen Plots in einer Liste. Dann können Sie auf jeder Seite eine beliebige Anzahl von Plots anlegen. Das ist hier wohl zuviel, aber here's an example wo die Flexibilität kommt.
Zuerst erstellen wir alle Plots. Wir verwenden team87
als Facettierungsspalte. Wir wollen also für jedes Level von team87
ein Diagramm erstellen. Wir tun dies, indem wir die Daten nach team87
aufteilen und für jede Teilmenge der Daten ein separates Diagramm erstellen.
Im folgenden Code teilt split
die Daten in separate Datenrahmen für jede Ebene von team87
. Der lapply
Wrapper speist nacheinander jede Datenteilmenge in ggplot ein, um für jedes Team ein Diagramm zu erstellen. Wir speichern die Ausgabe in plist
, eine Liste von (in diesem Fall) 24 Plots.
plist = lapply(split(Baseball, Baseball$team87), function(d) {
ggplot(d, aes(hits86, sal87)) +
geom_point() +
facet_wrap(~ team87) +
scale_y_continuous(limits=c(0, max(Baseball$sal87, na.rm=TRUE))) +
scale_x_continuous(limits=c(0, max(Baseball$hits86))) +
theme_bw() +
theme(plot.margin=unit(rep(0.4,4),"lines"),
axis.title=element_blank())
})
Jetzt werden wir sechs Diagramme in einer PDF-Datei zur Verfügung stellen. Im Folgenden finden Sie zwei Optionen, eine mit vier separaten PDF-Dateien mit jeweils sechs Plots, die andere mit einer einzigen vierseitigen PDF-Datei. Ich habe auch in einen der Grundstücke eingefügt. Wir verwenden grid.arrange
, um die Diagramme auszulegen, einschließlich der Argumente left
und bottom
, um Achsentitel hinzuzufügen.
library(gridExtra)
# Four separate single-page PDF files, each with six plots
for (i in seq(1, length(plist), 6)) {
pdf(paste0("baseball_",i,".pdf"), 7, 5)
grid.arrange(grobs=plist[i:(i+5)],
ncol=3, left="Salary 1987", bottom="Hits 1986")
dev.off()
}
# Four pages of plots in one PDF file
pdf("baseball.pdf", 7, 5)
for (i in seq(1, length(plist), 6)) {
grid.arrange(grobs=plist[i:(i+5)],
ncol=3, left="Salary 1987", bottom="Hits 1986")
}
dev.off()
Hallo @ eipi10! Das hat wunderbar funktioniert und war einfach zu verstehen! Obwohl ich ein Problem habe. Es scheint, dass der Code eine meiner Personen nicht mag und ich bekomme diesen Fehler. Es hört auf zu drucken, nachdem es diese individuelle '= Liste trifft (grobs Fehler in gList (705-70773 = Liste (grobs = Liste (Liste (x = 0.5, y = 0.5,: nur 'grobs' erlaubt in "gList" ' Jede Hilfe wäre toll! – LearningTheMacros
Gibt es etwas über die Daten für diese Person, die dazu führen, dass eine Handlung nicht produziert wird? Wenn kein Plot vorhanden ist, ist die Ausgabe des Plot-Codes kein Grob (Grafikobjekt). Zum Beispiel, fehlen alle Daten für diese Person oder etwas ähnliches? Versuchen Sie, Ihr Diagramm zu erstellen, aber feed ggplot einen Datenrahmen mit nur den Daten für diese eine Person und sehen, was passiert. Schau dir die Daten für diese Person an und sieh nach, ob da etwas offensichtlich anders ist. – eipi10
Die Handlung wurde gemacht, als ich HubertLs Vorschlag benutzte, also weiß ich es nicht. Wie auch immer, ich habe Ihre Antwort verstanden und es wird mir in Zukunft helfen. Danke nochmal! – LearningTheMacros