Что я делаю неправильно с опцией showZeroValues ​​dygraph?

Я пытаюсь нанести несколько рядов данных на один и тот же график в R, но даже с аргументом showZeroValues=TRUE в dyLegend() легенда перестает отображать значения при наведении курсора мыши, когда хотя бы один из рядов имеет y = 0 при текущем x. Я не уверен, что я делаю неправильно.

Ниже приведен упрощенный пример:

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)

На моем компьютере динамическая легенда пропускает все значения x, при которых один из двух рядов имеет y = 0, как видно, когда курсор находится близко к нулям, но легенда все еще застряла в правом конце графика: пример.


person Blab    schedule 18.09.2017    source источник


Ответы (1)


У меня была такая же проблема, и я обнаружил, что она была вызвана объектом 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)
person Koubak    schedule 18.06.2019