2015-11-24 79 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... 
         }")