studio - ggplot2 r



Zeichnen von zwei Variablen als Linien mit ggplot2 im selben Graphen (3)

Der generelle Ansatz besteht darin, die Daten in ein langes Format zu konvertieren (mit Hilfe von melt() aus dem Paket reshape oder reshape2 ) oder gather() aus dem tidyr Paket:

library("reshape2")
library("ggplot2")

test_data_long <- melt(test_data, id="date")  # convert to long format

ggplot(data=test_data_long,
       aes(x=date, y=value, colour=variable)) +
       geom_line()

https://code.i-harness.com

Eine sehr neue Frage, aber ich habe solche Daten:

test_data <-
  data.frame(
    var0 = 100 + c(0, cumsum(runif(49, -20, 20))),
    var1 = 150 + c(0, cumsum(runif(49, -10, 10))),
    date = seq(as.Date("2002-01-01"), by="1 month", length.out=100)
  )

Wie kann ich die beiden Zeitreihen var0 und var1 in derselben Grafik mit date auf der x-Achse mit ggplot2 ? Bonuspunkte, wenn Sie var0 und var1 verschiedene Farben haben und eine Legende enthalten können!

Ich bin sicher, das ist sehr einfach, aber ich kann keine Beispiele dafür finden.


Für eine kleine Anzahl von Variablen können Sie das Diagramm manuell erstellen:

ggplot(test_data, aes(date)) + 
  geom_line(aes(y = var0, colour = "var0")) + 
  geom_line(aes(y = var1, colour = "var1"))

Verwenden Sie Ihre Daten:

test_data <- data.frame(
var0 = 100 + c(0, cumsum(runif(49, -20, 20))),
var1 = 150 + c(0, cumsum(runif(49, -10, 10))),
Dates = seq.Date(as.Date("2002-01-01"), by="1 month", length.out=100))

Ich erstelle eine gestapelte Version, mit der ggplot() möchte:

stacked <- with(test_data,
                data.frame(value = c(var0, var1),
                           variable = factor(rep(c("Var0","Var1"),
                                                 each = NROW(test_data))),
                           Dates = rep(Dates, 2)))

In diesem Fall war das Erzeugen von stacked ziemlich einfach, da wir nur ein paar Manipulationen durchführen mussten, aber reshape() und die reshape2 und reshape2 könnten nützlich sein, wenn Sie einen komplexeren realen Datensatz zur Manipulation haben.

Sobald die Daten in dieser gestapelten Form vorliegen, benötigen Sie nur einen einfachen Aufruf von ggplot() , um das gewünschte Plot mit allen Extras zu erzeugen (ein Grund, warum ggplot2 höherer Ebene wie ggplot2 und ggplot2 so nützlich sind):

require(ggplot2)
p <- ggplot(stacked, aes(Dates, value, colour = variable))
p + geom_line()

Ich überlasse es dir, die Achsenbeschriftungen, den Legendentitel usw. aufzuräumen.

HTH





r-faq