2017-11-28 1 views
2

Nehmen wir an, ich habe einen VektorExpand Vektor zu gleichen Schritten

library(ggplot2) 
df <- data.frame(Tjump = c(0.2260760,0.2628534,0.4053514,0.2938391,0.5940260), 
       State = c(9,10,9,8,7)) 

wobei Tjump die verstrichene Zeit nach dem der nächste Zustandsübergang stattfindet. df kann als Sprungfunktion von

qplot(cumsum(df$Tjump), df$State, geom = "step") 

aufgetragen werden Wie kann ich nun diesen Schritt Funktion mit einer anderen Funktion zeichnen zusammen, die über times <- seq(from = 0, to = tail(df$Time, 1), by = 0.01) läuft?

Oder, um es anders zu gehen: Wie kann ich erweitern, um die gleiche Anzahl von Einträgen wie times zu haben, indem es seine Schrittnatur bewahrt?

+0

Bitte legen Sie alle Pakete, die Sie – Sotos

Antwort

0

Wenn ich Sie richtig verstehe, ist es nicht notwendig, den Datenrahmen zu erweitern. Sie können nur einen anderen Plot hinzuzufügen zum Beispiel mit geom_lines

Zum Beispiel wie folgt (oder geom_step, wenn Sie einen weiteren Schritt Funktion wollen.):

# Note that df$Time does not exist, so I changed it to sum(df$Tjump). 
times <- seq(from = 0, to = sum(df$Tjump), by = 0.01) 

qplot(cumsum(df$Tjump), df$State, geom = "step") + 
    geom_line(aes(x=times,y=8+runif(length(times),0,1)),colour='red') 

Ausgang:

Sample plot

Hope this hilft!

Florian

+0

Ja verwenden, es funktioniert ... gäbe es auch eine Möglichkeit geben, zu verwenden 'ggplot's 'facet_wrap'? – Pascal

+0

Ich denke nicht, dass das eine gute Idee ist, da Sie zwei verschiedene Arten von Plots machen wollen. [facet_wrap] (http://ggplot2.tidyverse.org/reference/facet_wrap.html) scheint in Szenarios besser geeignet zu sein, in denen Sie die gleiche Art von Plot für zwei verschiedene Teilmengen der Daten haben möchten. Vielleicht ist [dies] (http://www.cookbook-r.com/Graphs/Multiple_graphs_on_one_page_ (ggplot2) /) eine bessere Idee. – Florian

0

wie kann ich df erweitern, um die gleiche Menge von Einträgen wie Zeiten zu haben, indem es Schritt der Erhaltung der Natur?

Dies kann durch Verwendung approx wie geschehen:

f <- approx(df$Time, df$State, method = 'constant', n = 100)