2016-08-11 2 views
-1

I eine Zeitreihendatensatz haben, enthaltend:R: Plotten Signale auf die graphische Darstellung

Date Value Signal 
1 1/1/16 0.56 A 
2 1/2/16 0.70 
3 1/3/16 0.12 B 
4 1/4/16 0.33 C 
5 1/5/16 0.35 

Ich möchte Werte vs. Datum und Ort-Diagramm Signale plotten (von Spalte-Signal) auf dem Diagramm nächste zu den Werten. Was ist der beste Weg, dies zu erreichen?

Antwort

0

Eine Möglichkeit, dies zu tun ist, um erste Handlung die Date und Value Spalten in der Anfangs plot() Anruf, und dann ein nachfolgender Aufruf von text() machen die Signal Etiketten zu ziehen. Wir können einen Versatz von den exakten Datenpunkten berechnen, indem wir par('usr') aufrufen, um den Benutzerkoordinatenbereich des Plots (der während des Aufrufs plot() dynamisch erstellt wurde) zu erhalten, den y-Bereich zu extrahieren, die Differenz zu nehmen und ihn dadurch zu multiplizieren Definieren des Offsets als Bruchteil des Y-Koordinatenbereichs des Diagramms Der Offset kann alternativ (oder zusätzlich) aus dem x-Koordinatenbereich für einen horizontalen Offset berechnet werden.

Diese Demo gleicht die Etiketten von 6% der y-Koordinatenbereich:

## coerce Date column to Date type 
df$Date <- as.Date(df$Date,'%d/%m/%y'); 

## plot and label 
plot(df$Date,df$Value,type='b'); 
text(df$Date,df$Value+diff(par('usr')[3:4])*6/100,df$Signal,xpd=NA); 

Daten

df <- data.frame(Date=c('1/1/16','1/2/16','1/3/16','1/4/16','1/5/16'),Value=c(0.56,0.7,0.12, 
0.33,0.35),Signal=factor(c('A',NA,'B','C',NA)),stringsAsFactors=F); 

plot

+0

es Ihnen danken! Gibt es das überhaupt via dygraph? Ich arbeite mit immer ändernden Zeitreihen Daten so macht es mit plot() ein bisschen schwierig. –

+0

@ user3481603 Ich habe diese Bibliothek noch nie benutzt, also konnte ich nicht sagen. – bgoldst