我用dygraph的showZeroValues选项做错了什么?

时间:2017-09-18 14:32:43

标签: r time-series dygraphs zero

我试图将几个数据系列绘制到R中的同一个绘图中,但即使showZeroValues=TRUE中的dyLegend()参数,图例也会停止显示鼠标悬停时的值,至少有一个该系列在当前x处具有ay = 0。我不确定我做错了什么。

以下是一个简化示例:

library(dygraphs)
library(xts)

x=data.frame(a=c(1, 2, 3, 1, 0, 0, 2), b=c(2, 3, 1, 0, 1, 4, 5))
x$Date=seq(as.Date("2017-06-01"), (as.Date("2017-06-01")+dim(x)[1]-1), by="days")
d=xts(x, order.by=x$Date)[,1:2]

dygraph(d) %>%
  dyOptions(drawGrid=FALSE, fillGraph=TRUE) %>%
  dyLegend(labelsSeparateLines=TRUE, showZeroValues=TRUE)

在我的计算机上,动态图例会跳过两个系列中有一个y = 0的所有x值,可以看到光标接近零但图例仍然卡在图的右端:{ {3}}

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,发现这是由包含字符串的xts对象引起的。原始数据框有一个Date列,我曾用它创建xts对象,但没有将数字数据作为子集。这导致创建了xts对象,但具有字符值(请参见issue here)。出人意料的是,结果图没有受到太大影响,并且输出正确,这使得故障排除变得不那么简单。

在您的示例中,以下应解决此问题:

x=data.frame(a=c(1, 2, 3, 1, 0, 0, 2), b=c(2, 3, 1, 0, 1, 4, 5))
x$Date=seq(as.Date("2017-06-01"), (as.Date("2017-06-01")+dim(x)[1]-1), by="days")
d=xts(x[, 1:2], order.by=x$Date) # This is the only change in your code

dygraph(d) %>%
  dyOptions(drawGrid=FALSE, fillGraph=TRUE) %>%
  dyLegend(labelsSeparateLines=TRUE, showZeroValues=TRUE)