Ich versuche, jede Species Daten in Iris-Datensatz zu. Png-Datei mit for loop zu speichern. Aber zuvor wollte ich die Facettenbanddicke so verändern, wie ich es in meinem realen Datenplotting-Prozess machen musste.Speichern jeder geänderten Facette in ggplot2
Jedoch, wenn ich versuchte, jede Facette den folgenden Code darunter zu schreiben, mir nur die leeren Plots für jede dieser Arten.
Hier ist mein Versuch,
library(ggplot2)
plot_list = list()
for (i in unique(iris$Species)) {
p = ggplot(iris[iris$Species == i, ], aes(x=Sepal.Length, y=Sepal.Width)) +
geom_point(size=3, aes(colour=Species))+
facet_wrap(~Species)
#this part to modify facet_wrap strips
g1 = ggplotGrob(p)
pos = c(unique(subset(g1$layout, grepl("panel", g1$layout$name), select = t)))
for(i in pos) g1$heights[i-1] = unit(0.4,"cm")
grobs = which(grepl("strip", g1$layout$name))
for(i in grobs) g1$grobs[[i]]$heights <- unit(1, "npc")
grid.newpage()
grid.draw(g1)
plot_list[[i]] = g1
}
#finally write the modified graphs to file
for (i in 1:3) {
file_name = paste("iris_plot_", i, ".png", sep="")
tiff(file_name)
print(plot_list[[i]])
dev.off()
}
Derzeit dieser Code die leeren Graphen produziert und weiß nicht, warum! Jede Hilfe wird geschätzt!
Hallo. Danke für die Kommentare und Ihre Lösung. Eigentlich bin ich mir der Einstellung bewusst, dass die Textgröße eine Lösung ist, aber nicht die richtige, die ich erlebt habe. Weil, wenn Sie viele Facetten haben und Sie den Streifentext sehr klein machen, ist es sehr schwierig, strip Text zu sehen. Die Wende-Methode ist die Ausdünnung der Stripes wie in meinem OP-Code. – Alexander
Ich fragte in [hier] https://stackoverflow.com/questions/36783189/changing-the-appearance-of-facet-labels-size – Alexander
@Alexander Wenn Sie Änderungen im Grob-Objekt behalten wollen, einfach behalten Ihre Schleifenzähler gerade. Ein Weg (wie oben gezeigt) besteht darin, "i" den Index jedes Wertes in "unique (iris $ Species)" anstelle des Werts selbst übernehmen zu lassen, und wenn Sie mehr Schleifen in dieser Schleife haben, verwenden Sie einen anderen Zähler, z.B 'j'. –