Frage

I haben zwei Sätze von Datenpunkten, die beide auf der gleichen Hauptachse beziehen, aber die sich in Nebenachse unterscheiden. Gibt es eine Möglichkeit, sie auf die jeweils andere in R mit ggplot2 zu zeichnen?

Was ich suche ist im Grunde etwas, das wie folgt aussieht:

4+           |
 | x       . + 220
3+     . .   |
 |   x       |
2+   .       + 210
 |     x     |
1+ .     x x |
 |           + 200
0+-+-+-+-+-+-+
     time   

   . temperatur
   x car sale

(Dies ist nur ein Beispiel für mögliche Daten)

War es hilfreich?

Lösung

Ich bin kein Experte auf diesem, aber es ist mein Verständnis, dass dies mit Gitter möglich ist, aber nicht mit ggplot2. sehen Sie diesen leanr Blog-Post für ein Beispiel einer sekundären Achse Grundstück. Auch Hadley Antwort auf diese Frage .

Hier ist ein Beispiel dafür, wie es in Gittern zu tun (von Gabor Grothen ):

library(lattice)
library(grid)  # needed for grid.text

# data

Lines.raw <- "Date  Fo  Co
6/27/2007  57.1  13.9
6/28/2007  57.7  14.3
6/29/2007  57.8  14.3
6/30/2007  57  13.9
7/1/2007  57.1  13.9
7/2/2007  57.2  14.0
7/3/2007  57.3  14.1
7/4/2007  57.6  14.2
7/5/2007  58  14.4
7/6/2007  58.1  14.5
7/7/2007  58.2  14.6
7/8/2007  58.4  14.7
7/9/2007    58.7 14.8
"

# in reality next stmt would be DF <- read.table("myfile.dat", header = TRUE)
DF <- read.table(textConnection(Lines.raw), header = TRUE)
DF$Date <- as.Date(DF$Date, "%m/%d/%Y")

par.settings <- list(
        layout.widths = list(left.padding = 10, right.padding = 10),
        layout.heights = list(bottom.padding = 10, top.padding = 10)
)

xyplot(Co ~ Date, DF, default.scales = list(y = list(relation = "free")),
        ylab = "C", par.settings = par.settings)

trellis.focus("panel", 1, 1, clip.off = TRUE)
  pr <- pretty(DF$Fo)
  at <- 5/9 * (pr - 32)
  panel.axis("right", at = at, lab = pr, outside = TRUE)
  grid.text("F", x = 1.1, rot = 90) # right y axis label
trellis.unfocus()

Andere Tipps

Shane Antwort, "können Sie nicht in ggplot2" ist korrekt, wenn unvollständig. Argumentieren, ist es nicht etwas, das Sie wollen zu tun. Wie entscheiden Sie, wie die Y-Achse zu skalieren? Haben Sie die Mittel der Linien wollen gleich sein? Die Reichweite? Es gibt keine prinzipielle Art und Weise, es zu tun, und es ist zu einfach, die Ergebnisse wie alles aussehen zu lassen Sie sich aussehen sollen. Statt dem, was man, vor allem in einer Zeitreihe, so tun mag, ist es, die zwei Zeilen von Daten bis zur Norm, so dass bei einem bestimmten Wert von t, oft min (t), Y1 = Y2 = 100. Hier ist ein Beispiel ich zog aus dem Bonddad Blog (nicht ggplot2 verwenden, weshalb es hässlich! ist) Aber man kann die relative Zunahme und Abnahme der beiden Linien sauber erzählen, die ganz andere zugrunde liegende Skalen haben.

alt text

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top