2

我正在使用 dygraphs 并希望将 x 轴粒度从每天更改为每年。我有几个每日数据点,格式均为 c("2009-01-01", "2010-01-01", "2011-01-01"),x 轴刻度出现在 2009 年 1 月和 2009 年 6 月,2010 年 1 月,2010 年 6 月我希望 x 轴仅显示为与实际存在的数据点相对应的“2009、2010、2011”。

我有以下代码:

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)  
4

1 回答 1

3

很近!在我注意到您上面的“或者,另一个代码显示:”之前,我编写了与您的代码基本相同的代码(来自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...
                        }")
于 2016-09-23T15:48:51.297 回答