2015-11-24 62 views
1

我使用了dygraph並希望將x軸粒度從每天更改爲每年。 我有幾個日常數據點,格式爲c(「2009-01-01」,「2010-01-01」,「2011-01-01」),x軸刻度出現在2009年1月,6月2009年,2010年1月,2010年6月 我想x軸只顯示爲 「2009年,2010年,2011」 對應於實際存在的數據點..R Dygraphs從每月到每年的X軸粒度

我有以下代碼:

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() }") 

它返回x軸上每個日期的年份,但這意味着有多年,如 「2009年1月,2009年6月,2010年1月,2010年6月」變成「2009,2009,2010,2010」

或者,另一個代碼顯示:

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() }") 

根本不返回任何圖形,除了y軸。

我該如何解決這個問題?

hhinfl是一個XTS文件構造如下:

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

請提供您的數據幀或其中的一小部分(使用dput()來生產它)。這樣回答者可以運行代碼來測試他們的答案。 – lawyeR

+0

@lawyeR謝謝你的意見,我現在已經包含了構建數據框所需的代碼 – stochastiq

+0

dySeries錯誤(。,「家庭充氣」,顏色=「#0174DF」): 一個或多個指定系列是未找到。有效的系列名稱是:日期,時,平均。這是我運行MWE代碼時得到的錯誤。 – lawyeR

回答

1

如此接近!在我注意到你的「或者,另一個代碼顯示:」之前,我寫了與你的代碼基本相同的代碼(從http://jsfiddle.net/kaliatech/P8ehg/中刪除),並得到了相同的空白圖表。

然後我偶然發現https://github.com/danvk/dygraphs/blob/master/src/dygraph-tickers.js#L221,看到參數應該是ANNUAL,而不是YEARLY

那麼這裏就是原來很適合我:

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... 
         }")