2016-12-29 4 views
0

Ich bin neu in R und ich versuchte, dygraph für Zeitreihen von 2014-09-02 12:00:00 bis 2014-12-12 11:40:00 zu plotten. Die Daten wurden alle 20 Minuten genommen. Meine Daten sehen wie folgt aus.Potting Dygraph für riesige Daten in 20 min Intervall

Date    Temp2 Temp3 
9/1/2014 12:20:00 22.7 22.7 
9/1/2014 12:40:00 22.5 22.8 
9/1/2014 12:20:00 22.4 22.9 
9/1/2014 01:00:00 22.3 22.9 
9/1/2014 01:20:00 22.2 22.9 
9/1/2014 01:40:00 22.2 22.9 
9/1/2014 02:00:00 22.1 23 

Die Daten wurden vier Monate lang fortgesetzt. Das Folgende ist der Code, den ich versucht habe, aber nicht erfolgreich ist.

## My data frame(Data) contains 7347 rows. 
data1<-rnorm(Data`) 
# The data collected every 20 min (72 times/day) 

d1<-seq(as.POSIXct("2014-09-02 12:00:00"), as.POSIXct("2014-12-12 11:40:00"), by=72) 

df <- data.frame(cbind(d1, data1)) 

Zeitreihe

ts1<-ts(df[,2:3], start=0,end=101*24,frequency=60/20) 

dygraph(df) %>% dyRangeSelector() 
    dygraph(ts1) %>% dyRangeSelector() 
    dygraph(Temp2) %>% dyRangeSelector() 
    dygraph(Tem3) %>% dyRangeSelector() 

schätzen ich Hilfe.

Selam

+0

Warum haben Sie getaggt dieses JavaScript Wenn es eine R Frage? – Craicerjack

+0

Hey Selam, brauchst du nicht nur ts in dygraphs zu verwenden, anstatt mit einem data.frame zu beginnen? –

Antwort

1

Es scheint mir, dass Sie zu hart sind vielleicht ein bisschen Art und Weise zu denken. Sobald Sie ein Zeitreihenobjekt haben, verwenden Sie das, um eine Grafik zu zeichnen. Möglicherweise möchten Sie bei Bedarf reproduzierbare Daten bereitstellen, um Ihren Standpunkt zu klären.

library(data.table) 
library(dygraphs) 

set.seed(111) 
mydf <- data.frame(Date = seq(from = as.POSIXct("2014-09-02 12:00:00", tz = "UTC"), 
           to = as.POSIXct("2014-09-02 14:00:00", tz = "UTC"), by = 1200), 
        Temp2 = sample.int(40, size = 7), 
        Temp3 = sample.int(20, size = 7)) 

#     Date Temp2 Temp3 
#1 2014-09-02 12:00:00 24 11 
#2 2014-09-02 12:20:00 29  9 
#3 2014-09-02 12:40:00 15  2 
#4 2014-09-02 13:00:00 20 10 
#5 2014-09-02 13:20:00 14 17 
#6 2014-09-02 13:40:00 38 18 
#7 2014-09-02 14:00:00  1  1 

# Create a time series object 
as.xts.data.table(setDT(mydf)) -> foo 

# Draw a figure 
dygraph(foo) 

enter image description here

dygraph(foo) %>% dyRangeSelector() 

enter image description here

+0

vielen dank für ihre hilfe. Lassen Sie mich meine Frage im Detail klären. Ich habe Temperaturdaten vom Datalogger jemals 20min vom 9/2/2014 0:00 bis 12/12/2014 23:40 (Monat.Tag.Jahr.Stunde.Minutenauftrag) .My CSV genommen Daten haben 7347 Zeilen und 3 Spalten (Datum, Temp2 und Temp3). Als Anfänger konnte ich einige der Codes, die Sie im obigen Beispiel verwendet haben, nicht verstehen. Was für = 1200 bedeutet? Ich bin nicht klar mit Temp2 = sample.int (40, Größe = 7), Temp3 = sample.int (20, Größe = 7)) Ist das Zeitintervall für jede Beobachtung? Das Zeitintervall für beide war dasselbe, welches 20 Minuten beträgt. Das Folgende ist Code, den ich verwendet habe – Peace

+0

@Selam Was Sie erwähnt haben, ist alles über meine Beispieldaten. Sie müssen sich also um nichts kümmern. Sie möchten sicherstellen, dass Sie ein Zeitreihenobjekt verwenden, wenn Sie dfgraph verwenden. In Ihrem Code ist 'df' nur ein Datenrahmen. Es ist kein Zeitreihenobjekt. – jazzurro

+0

Ich habe versucht, mit dem Beispielcode zu plotten und Fehler bekommen. selam_final <- read.csv ("C: /Users/Selamawit/Desktop/selam.csv") selam_final <- as.data.frame (selam_final, header = True) Bibliothek (dygraphs) Bibliothek (data.table) set.seed (111) mydf <- data.frame (Datum = seq (von = as.POSIXct ("9-2-2014 0:00", tz = "UTC"), bis = as.POSIXct ("12-12-2014 23:40", tz = "UTC"), um = 1200), Temp2 = sample.int (40, Größe = 7347), Temp3 = sample.int (20, Größe = 7347), Daten = selam_final) Fehler in sample.int (40, size = 7347): kann keine Stichprobe größer als die Bevölkerung, wenn 'ersetzen = FALSE' – Peace