2016-08-12 2 views
0

Dies sollte sehr einfach sein (denke ich) und doch kann ich nicht aus irgendeinem Grund zu arbeiten. Ich habe Daten wie folgt aus:Plotly R: kann keine benutzerdefinierten Xaxis-Datumsbereiche zu arbeiten

df 
      x y 
1 2016-08-12 1 
2 2016-08-13 2 
3 2016-08-14 3 
4 2016-08-15 4 
5 2016-08-16 5 

str(df) 
'data.frame': 5 obs. of 2 variables: 
$ x: Date, format: "2016-08-12" "2016-08-13" ... 
$ y: int 1 2 3 4 5 

ich plotly bin mit wie folgt, aber es passt den xaxis meiner angegebenen benutzerdefinierten Werte liegen. Stattdessen den Bereich der Daten verwendet:

library(plotly) 
plot_ly(df, x = x, y = y) %>% layout(xaxis = list(range = c(as.Date('2016-08-01'), as.Date('2016-08-31')))) 

Auf der anderen Seite, wenn ich numerische Daten wie dieses:

df 
    x y 
1 1 1 
2 2 2 
3 3 3 
4 4 4 
5 5 5 

und einen benutzerdefinierten Bereich wie folgt angeben, es funktioniert gut:

plot_ly(df, x = x, y = y) %>% layout(xaxis = list(range = c(-5, 10))) 

Was fehlt mir bei der Arbeit mit Datenbereichen?

Antwort

2

von https://plot.ly/r/reference/#layout-xaxis-range (fett von mir hinzugefügt) Zitiert:

Bereich (Liste) Legt den Bereich dieser Achse. Wenn die Achse type "log" ist, müssen Sie das Protokoll Ihres gewünschten Bereichs aufnehmen (z. B. den Bereich von 1 bis 100 einstellen, den Bereich von 0 bis 2 einstellen). Wenn die Achse type "Datum" ist, müssen Sie das Datum in Unix-Zeit in Millisekunden konvertieren (die Anzahl der Millisekunden seit dem 1. Januar 1970). Für Beispiel, um den Datumsbereich vom 1. Januar 1970 bis 4. November, 2013, legen Sie den Bereich von 0 bis 1380844800000.0 fest. Jede benannte Liste hat eine oder mehrere der unten aufgeführten Schlüssel.

So können Sie Ihre Reisedaten an die Unix-Zeit in Millisekunden konvertieren:

plot_ly(df, x = x, y = y) %>% 
    layout(xaxis = list(
     range = 
      c(as.numeric(as.POSIXct("2016-08-01", format="%Y-%m-%d"))*1000, 
       as.numeric(as.POSIXct("2016-08-31", format="%Y-%m-%d"))*1000), 
     type = "date"))