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

What am I doing wrong with dygraph's showZeroValues option?

我正在尝试将多个数据系列绘制到 R 中的同一个图上,但即使在 dyLegend() 中使用 showZeroValues=TRUE 参数,当至少有一个时,图例停止显示鼠标悬停时的值该系列在当前 x 处有一个 y=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 值,从光标接近零时可以看出,但图例仍然停留在图表的右端: example.

我有同样的问题,发现它是由包含字符串的 xts 对象引起的。原始数据框有一个 Date 列,我用它来创建 xts 对象,但我没有对数值数据进行子集化。这导致创建了 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[, 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)