2015-11-24 6 views
1

J'utilise des dygraphes et je voudrais changer la granularité de l'axe des x de tous les jours à tous les ans. J'ai quelques points de données quotidiens tous au format c ("2009-01-01", "2010-01-01", "2011-01-01"), et les coches de l'axe des x apparaissent en janvier 2009, juin 2009, Jan 2010, Juin 2010 Je veux l'axe x apparaisse uniquement comme "2009, 2010, 2011" correspondant à des points de données qui existent réellement ..R Dégraphies Granularité de l'axe X de mensuelle à annuelle

je le code suivant:

dygraph(hhinfl) %>% dyLegend(width=400, show="auto") %>% dyOptions(drawPoints=TRUE, pointSize=3) %>% dySeries("Household Inflation", color="#0174DF") %>% dySeries("date", color="#FFFFFF")%>% dySeries("Average Inflation", color="#DF0101") %>% dyAxis("y", label="Inflation Rate (%)") %>% dyAxis("x", drawGrid = FALSE, axisLabelFormatter="function(d) { return d.getFullYear() }") 

qui renvoie l'ANNEE de chaque date sur l'axe des x, mais cela signifie qu'il y a plusieurs années comme "Jan 2009, Juin 2009, Jan 2010, Juin 2010" devient "2009, 2009, 2010, 2010"

Sinon, un autre code montre:

dygraph(hhinfl) %>% dyLegend(width=400, show="auto") %>% dyOptions(drawPoints=TRUE, pointSize=3) %>% dySeries("Household Inflation", color="#0174DF") %>% dySeries("date", color="#FFFFFF")%>% dySeries("Average Inflation", color="#DF0101") %>% dyAxis("y", label="Inflation Rate (%)") %>% dyAxis("x", drawGrid = FALSE, ticker= " function (a, b, pixels, opts, dygraph, vals) {return Dygraph.getDateAxis(a, b, Dygraph.YEARLY, opts, dygraph);}", axisLabelFormatter="function(d) { return d.getFullYear() }") 

ne renvoie aucun graphique du tout, à l'exception de l'axe des y.

Comment puis-je résoudre ce problème?

hhinfl est un fichier XTS construit comme suit:

dateseq<- seq(from=as.Date("2010-01-01"),to=as.Date("2013-12-31"),by="year") 
household<- c(2.3, 2.4, 2.5, 3.1) 
avg<- c(2.5, 2.6, 2.7, 3.1) 

hhinfl<- data.frame(date=dateseq, hh=household, average=avg) 
colnames(hhinfl)<- c("date", "Household Inflation", "Average Inflation") 
hhinfl<-xts(hhinfl, order.by=hhinfl$date) 
+0

S'il vous plaît fournir votre trame de données ou une petite partie (utilisation dput() pour le produire). De cette façon, les répondeurs peuvent exécuter du code pour tester leurs réponses. – lawyeR

+0

@lawyeR je vous remercie pour les commentaires, j'ai maintenant inclus le code nécessaire pour construire la trame de données – stochastiq

+0

Erreur dans dySeries (., "Household Inflation", color = "# 0174DF"): Une ou plusieurs des séries spécifiées ont été pas trouvé. Les noms de séries valides sont: date, hh, average. C'est l'erreur que je reçois quand je cours votre code MWE. – lawyeR

Répondre

1

si près! Avant que je remarque votre "Alternativement, un autre code montre:" ci-dessus, j'ai écrit un code essentiellement identique au vôtre (berceau de http://jsfiddle.net/kaliatech/P8ehg/) et j'ai reçu le même tableau masqué.

Puis je suis tombé sur https://github.com/danvk/dygraphs/blob/master/src/dygraph-tickers.js#L221 et j'ai vu que le paramètre devrait être ANNUAL, pas YEARLY.

Alors, voici ce qui se passe bien pour moi:

dygraph(hhinfl) %>% 
    dyLegend(width=400, show="auto") %>% 
    dyOptions(drawPoints=TRUE, pointSize=3) %>% 
    dySeries("Household Inflation", color="#0174DF") %>% 
    dySeries("date", color="#FFFFFF") %>% 
    dySeries("Average Inflation", color="#DF0101") %>% 
    dyAxis("y", label="Inflation Rate (%)") %>% 
    dyAxis("x", drawGrid = FALSE) %>% 
    dyAxis("x", axisLabelFormatter="function(d) { return d.getFullYear() }") %>% 
    dyAxis("x", ticker="function(a, b, pixels, opts, dygraph, vals) { 
          return Dygraph.getDateAxis(a, b, Dygraph.ANNUAL, opts, dygraph) 
          // or TWO_HOURLY or SIX_HOURLY... 
         }")