1

I have time-series data that I would like to plot in R with dygraphs with bars as opposed to lines. I am using the following plotter suggestion from the dygraphs documentation.

dyBarChart <- function(dygraph) {
  dyPlotter(dygraph = dygraph,
            name = "BarChart",
            path = system.file("plotters/barchart.js",
                               package = "dygraphs"))
}

The problem I am having is representing negative values.
With a line plot, this dygraph() works as it should:

dygraph(test)

enter image description here

However, when we add the bar chart, nothing is plotted and warnings are returned:

dygraph(z)  %>%  dyBarChart() 
There were 14 warnings (use warnings() to see them)
> warnings()

Warning messages:
1: In normalizePath(path) : path[1]="": No such file or directory
2: In file.copy(from, to, overwrite = TRUE, recursive = isdir) : too deep nesting
3: In file.copy(from, to, overwrite = TRUE, recursive = isdir) : too deep nesting...

Is there a known workaround for plotting negative values in R dygraph barcharts?

Here is the sample data:

> dput(test)
structure(c(-6L, 0L, -4L, -1L, 2L, 0L, 18L, -3L, -2L, -1L, -2L, 
1L, -22L, -5L, -1L, 3L, 11L, 2L, -2L, 5L, -3L, -1L, -2L, 0L, 
12L), index = structure(c(1521217200, 1521217800, 1521218400, 
1521219000, 1521219600, 1521220200, 1521220800, 1521221400, 1521222000, 
1521222600, 1521223200, 1521223800, 1521224400, 1521225000, 1521225600, 
1521226200, 1521226800, 1521227400, 1521228000, 1521228600, 1521229200, 
1521229800, 1521230400, 1521231000, 1521231600), class = c("POSIXct", 
"POSIXt"), tzone = ""), class = "zoo")
Petr Razumov
  • 1,952
  • 2
  • 17
  • 32
iskandarblue
  • 7,208
  • 15
  • 60
  • 130

1 Answers1

1

If you try the example in the link you provided you will see it does not work. But thanks to: How do you create a bar and line plot with R dygraphs?

Here is the right dyBarChart function for your code to work.

dyBarChart <- function(dygraph) {
    dyPlotter(
        dygraph = dygraph,
        name = "BarChart",
        path = system.file("examples/plotters/barchart.js",package = "dygraphs")
    )
}

dygraph(test) %>% dyBarChart() 
MLavoie
  • 9,671
  • 41
  • 36
  • 56