Einige Datenabtastwert:Wie legen Sie unterschiedliche Skalengrenzen für verschiedene Facetten fest?
dfr <- data.frame(
x = rep.int(1:10, 2),
y = runif(20),
g = factor(rep(letters[1:2], each = 10))
)
Eine einfache Streudiagramm mit zwei Facetten:
p <- ggplot(dfr, aes(x, y)) +
geom_point() +
facet_wrap(~ g, scales = "free_y")
I die Achsengrenzen für alle Platten mit
p + scale_y_continuous(limits = c(0.2, 0.8))
(oder einer Umhüllung für diesen Satz kann wie ylim
)
aber wie stelle ich di ein verschiedene Achsengrenzen für verschiedene Facetten?
Der latticey Weg, es zu tun wäre, wirft
p + scale_y_continuous(limits = list(c(0.2, 0.8), c(0, 0.5)))
zum Beispiel Leider gibt es in dem ggplot2 Fall einen Fehler, dass nur eine Liste auf dieses Argument zu übergeben.
EDIT:
Hier ist ein Teil-Hack. Wenn Sie den Bereich der Maßstäbe erweitern möchten, können Sie Ihrem Dataset Spalten hinzufügen, die die Grenzwerte angeben, und sie dann mit geom_blank
zeichnen.
Modified-Datensatz:
dfr <- data.frame(
x = rep.int(1:10, 2),
y = runif(20),
g = factor(rep(letters[1:2], each = 10)),
ymin = rep(c(-0.6, 0.3), each = 10),
ymax = rep(c(1.8, 0.5), each = 10)
)
Aktualisiert Grundstück:
p + geom_blank(aes(y = ymin)) + geom_blank(aes(y = ymax))
nun die Waage unterschiedlich sind und die linke Hand ist richtig. Leider kontrahiert die rechte Skala nicht, da sie Platz für die Punkte schaffen muss.
Falls es hilft, können wir die Frage wie folgt umformulieren: "Ist es möglich, Punkte zu zeichnen, ohne dass die Skalen neu berechnet werden und ohne explizit scale_y_continuous
aufzurufen?"
Danke für den Link. Nicht ganz die Antwort, auf die ich gehofft hatte. –
@Ritchie: Überprüfen Sie mit Hadley, er könnte etwas in den Entwicklungsversionen von ggplot2 in Arbeit haben –