Frage

Ein Neuling Frage. (ZUSäTZLICH NEW INFO)

habe ich einen Satz von zeitgestempelten Daten, die zufällig gesammelt wurden. Ich mag eine Matrix von Plots erstellen, aber ich konnte entweder Scatterplot oder xyplot & Zeitobjekte nicht erstellen.

meine Daten

dataset$Time  #POSIX time objects (no set sampling period)
              #i built POSIX time objects by dataset$Time<-strptime(tt, "%H:%M:%OS")
              #the origial string was formated like this 12:12:12.234 (HH:MM:SS:msec)
dataset$d1, dataset$d2 #integers
dataset$d3 #factor with 10 levels

.

Ich kann diese

tun
plot( dataset$Time, dataset$d1)
scatterplot(dataset$d1 ~ dataset$d2 | dataset$d3, data=dataset)
xyplot(dataset$d1 ~ dataset$d2 | dataset$d3, data=dataset)

Allerdings kann ich nicht tun diese (POSIX Zeitobjekt in der x-Achse)

scatterplot(dataset$d1 ~ dataset$Time | dataset$d3, data=dataset)
xyplot(dataset$d1 ~ dataset$Time | dataset$d3, data=dataset)

( NEW INFO )

  

Fehler in der Struktur (.Internal (as.POSIXct (x, tz)), class = c ( "POSIXt", "POSIXct"),.: Ungültig 'x' Argument

( NEW INFO ), aber das funktioniert (POSIX Zeitobjekt in y-Achse)

xyplot(dataset$Time ~ dataset$d1 | dataset$d3, data=dataset)

verwandt, aber andere Frage ist hexbin. Wenn die Zeit Objekte hexbin hinzugefügt werden, wird das Grundstück von der hexbin nicht korrekt Zeitformat an den Geräten zeigen.

bin<-hexbin(dataset$Time, dataset$d1) 
plot(bin))

Was soll ich tun?

Vielen Dank für die in sie suchen !!

War es hilfreich?

Lösung

Hier ist ein funktionierendes Beispiel. Möglicherweise haben Sie Ihre Datenformate falsch verstanden -. Man braucht vorsichtig über die genauen Datenformate sein

Als erstes wird ein einfacher Datenrahmen:

R> X <- data.frame(pt=Sys.Date()+0:4, x1=100+cumsum(rnorm(5)),
+                                     x2=90+cumsum(rt(5,4)))
R> X
          pt     x1    x2
1 2010-06-22  98.73 90.33
2 2010-06-23  99.43 89.56
3 2010-06-24  98.85 86.95
4 2010-06-25  99.08 88.52
5 2010-06-26 100.30 94.08
R> 

Dies ist das sogenannte breit Form, die Gitter nicht verwenden. Sie müssen es in verwandeln lang Format. Ich benutze stack() hier können Sie auch cast() und melt() verwenden aus dem reshape Paket:

R> Y <- data.frame(pt=rep(X$pt,2), stack(X, select=c(x1,x2)))
R> Y
           pt values ind
1  2010-06-22  98.73  x1
2  2010-06-23  99.43  x1
3  2010-06-24  98.85  x1
4  2010-06-25  99.08  x1
5  2010-06-26 100.30  x1
6  2010-06-22  90.33  x2
7  2010-06-23  89.56  x2
8  2010-06-24  86.95  x2
9  2010-06-25  88.52  x2
10 2010-06-26  94.08  x2
R> 

Nun ist der xyplot Aufruf ist einfach:

R> xyplot(values ~ pt | ind, data=Y, panel=panel.lines)

und Sie kann natürlich Gebrauch viele komplizierte Anlage Ausdrücke.

Andere Tipps

Offenbar R ein Problem Umgang mit der Sucht nach POSIX Zeiten hat ... es gibt mir den Fehler:

  

Fehler in +.POSIXt (x [Boden (d)], x [Decke (d)]): binary '+' definiert ist, nicht für "POSIXt" Objekte

warf sie nur auf numerische und es sollte funktionieren. Sie können die entsprechende Achse verstecken und es später mit den richtigen Daten neu zu zeichnen

Z. B:.

scatterplot(dataset$d1 ~ as.numeric(dataset$Time) | dataset$d3, data=dataset, xaxt="n")
axis(1, at=as.numeric(dataset$Time), labels=dataset$Time, cex.axis=0.5)

Für mich ist es funktioniert, so dass Sie wahrscheinlich einen Zeitvektor in einem schlechten Format hat. Was bekommen Sie, wenn Sie class(dataset$Time) nennen? Es sollte „POSIXct“ für diese Arbeit enthält.

Auf der anderen Seite, Sie müssen nicht dataset$ in Formel setzen, wenn Sie data=dataset liefern.

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