| Type: | Package | 
| Title: | An Incomplete Wrapper of the 'nvd3' JavaScript Library | 
| Version: | 1.0.0 | 
| Maintainer: | Stéphane Laurent <laurent_step@outlook.fr> | 
| Description: | Creates JavaScript charts with the 'nvd3' library. So far only the multibar chart, the horizontal multibar chart, the line chart and the line chart with focus are available. | 
| License: | GPL-3 | 
| Encoding: | UTF-8 | 
| URL: | https://github.com/stla/Rnvd3 | 
| BugReports: | https://github.com/stla/Rnvd3/issues | 
| Imports: | lubridate, data.table, htmlwidgets, lazyeval, viridisLite, htmltools, jsonlite, grDevices, utils | 
| Suggests: | reshape2, shiny | 
| RoxygenNote: | 7.1.1 | 
| NeedsCompilation: | no | 
| Packaged: | 2021-09-01 12:39:26 UTC; SDL96354 | 
| Author: | Stéphane Laurent [aut, cre], Novus Partners, Inc. [cph] ('nvd3.js' library), Michael Bostock [cph] ('d3.js' library) | 
| Repository: | CRAN | 
| Date/Publication: | 2021-09-02 09:20:05 UTC | 
Objects imported from other packages
Description
These objects are imported from other packages.
Follow the links to their documentation:
JS,
saveWidget,
prependContent.
Horizontal multibar chart
Description
HTMLwidget displaying a horizontal multibar chart.
Usage
hMultiBarChart(
  data,
  formula,
  by,
  palette = "viridis",
  xAxisTitle = NULL,
  yAxisTitle = NULL,
  margins = list(b = 100, l = 100),
  duration = 1300,
  groupSpacing = 0.1,
  xAxisTitleDistance = 25,
  yAxisTitleDistance = -5,
  yAxisShowMaxMin = FALSE,
  yAxisTickFormat = ".0f",
  nticks = 5,
  xLabelsFontSize = "1rem",
  yLabelsFontSize = "1rem",
  showValues = FALSE,
  tooltipFormatters = list(value = NULL, header = NULL, key = NULL),
  tooltipTransitions = TRUE,
  tooltipShadow = TRUE,
  width = "100%",
  height = NULL,
  elementId = NULL
)
Arguments
| data | dataframe containing the data used for the chart | 
| formula | a two-sided formula like  | 
| by | string, the "by" variable; must be a column name of  | 
| palette | this can be either the name of a viridis color palette, e.g.
 | 
| xAxisTitle | a title for the x-axis; if  | 
| yAxisTitle | a title for the y-axis; if  | 
| margins | a named list defining the margins, with names  | 
| duration | duration of the transition, a number of milliseconds | 
| groupSpacing | a number, controls the distance between groups of bars | 
| xAxisTitleDistance | a number, controls the distance between the x-axis and its title | 
| yAxisTitleDistance | a number, controls the distance between the y-axis and its title | 
| yAxisShowMaxMin | Boolean, whether to show the min and the max on the y-axis | 
| yAxisTickFormat | a d3 formatting string for the y-axis; see d3.format | 
| nticks | integer, the number of ticks on the y-axis | 
| xLabelsFontSize | a CSS measure, the font size of the labels on the x-axis | 
| yLabelsFontSize | a CSS measure, the font size of the labels on the y-axis | 
| showValues | Boolean, whether to show the values next to the bars | 
| tooltipFormatters | formatters for the tooltip; each formatter must
be  
 | 
| tooltipTransitions | Boolean, whether to style the tooltip with a fade effect | 
| tooltipShadow | Boolean, whether to style the tooltip with a shadow | 
| width | width of the chart container, must be a valid CSS measure | 
| height | height of the chart container, must be a valid CSS measure | 
| elementId | an id for the chart container; commonly useless | 
Value
A htmlwidget displaying a grouped/stacked bar chart.
Examples
library(Rnvd3)
dat <- aggregate(breaks ~ wool + tension, data = warpbreaks, mean)
levels(dat[["tension"]]) <- c("Low", "Medium", "High")
hMultiBarChart(
  dat, breaks ~ wool, "tension", yAxisShowMaxMin = TRUE,
  yAxisTitle = "Mean of breaks", yAxisTickFormat = ".01f"
)
# the axis titles are small, let's make them bigger
library(htmltools)
CSS <- HTML(
  ".nvd3 .nv-axis.nv-x text.nv-axislabel,
   .nvd3 .nv-axis.nv-y text.nv-axislabel {
     font-size: 1rem;
  }"
)
prependContent(
  hMultiBarChart(
    dat, breaks ~ wool, "tension", yAxisShowMaxMin = TRUE,
    yAxisTitle = "Mean of breaks", yAxisTickFormat = ".01f"
  ),
  tags$style(CSS)
)
Line chart
Description
Create a HTML widget displaying a line chart.
Usage
lineChart(
  data,
  xAxisTitle = "x",
  yAxisTitle = "y",
  margins = list(l = 90),
  duration = 500,
  useInteractiveGuideline = TRUE,
  xAxisTickFormat = ".0f",
  yAxisTickFormat = ".02f",
  xLabelsFontSize = "0.75rem",
  yLabelsFontSize = "0.75rem",
  legendPosition = "top",
  interpolate = "linear",
  xRange = NULL,
  yRange = NULL,
  rightAlignYaxis = FALSE,
  tooltipFormatters = list(value = NULL, header = NULL, key = NULL),
  tooltipTransitions = TRUE,
  tooltipShadow = TRUE,
  width = "100%",
  height = NULL,
  elementId = NULL
)
Arguments
| data | data used for the chart; it must be a list created with
 | 
| xAxisTitle | string, the title of the x-axis | 
| yAxisTitle | string, the title of the y-axis | 
| margins | a named list defining the margins, with names  | 
| duration | transition duration in milliseconds | 
| useInteractiveGuideline | Boolean, a guideline and synchronized tooltips | 
| xAxisTickFormat | a d3 formatting string for the ticks on the x-axis; a d3 time formatting string if the x-values are dates, see d3.time.format | 
| yAxisTickFormat | a d3 formatting string for the ticks on the y-axis | 
| xLabelsFontSize | a CSS measure, the font size of the labels on the x-axis | 
| yLabelsFontSize | a CSS measure, the font size of the labels on the y-axis | 
| legendPosition | string, the legend position,  | 
| interpolate | interpolation type, a string among  | 
| xRange | the x-axis range, a length two vector of the same type as the
x-values, or  | 
| yRange | the y-axis range, a numeric vector of length 2, or
 | 
| rightAlignYaxis | Boolean, whether to put the y-axis on the right side instead of the left | 
| tooltipFormatters | formatters for the tooltip; each formatter must
be  
 | 
| tooltipTransitions | Boolean, whether to style the tooltip with a fade effect | 
| tooltipShadow | Boolean, whether to style the tooltip with a shadow | 
| width | width of the chart container, must be a valid CSS measure | 
| height | height of the chart container, must be a valid CSS measure | 
| elementId | an id for the chart container, usually useless | 
Value
A HTML widget displaying a line chart.
Examples
library(Rnvd3)
dat1 <-
  lineChartData(x = ~ 1:100, y = ~ sin(1:100/10), key = "Sine wave", color = "lime")
dat2 <-
  lineChartData(x = ~ 1:100, y = ~ sin(1:100/10)*0.25 + 0.5,
                key = "Another sine wave", color = "red")
dat <- list(dat1, dat2)
lineChart(dat)
# with a date x-axis ####
dat1 <-
  lineChartData(
    x = ~ Sys.Date() + 1:100, y = ~ sin(1:100/10), key = "Sine wave", color = "lime"
  )
dat2 <-
  lineChartData(x = ~ Sys.Date() + 1:100, y = ~ sin(1:100/10)*0.25 + 0.5,
                key = "Another sine wave", color = "darkred")
dat <- list(dat1, dat2)
lineChart(
  dat,
  margins = list(t = 100, r = 100, b = 100, l = 100),
  xAxisTickFormat = "%Y-%m-%d"
)
# with a datetime x-axis
dat <- data.frame(
  x  = Sys.time() + (1:300),
  y1 = sin(1:300/10),
  y2 = sin(1:300/10)*0.25 + 0.5
)
dat1 <-
  lineChartData(x = ~x, y = ~y1, data = dat, key = "Sine wave", color = "lime")
dat2 <-
  lineChartData(x = ~x, y = ~y2, data = dat,
                key = "Another sine wave", color = "darkred")
dat12 <- list(dat1, dat2)
lineChart(
  dat12,
  margins = list(t = 100, r = 100, b = 100, l = 100),
  xAxisTickFormat = "%H:%M:%S",
  xAxisTitle = "Time", yAxisTitle = "Energy"
)
Line chart data
Description
Make line chart data.
Usage
lineChartData(x, y, data = NULL, key, color, area = FALSE)
Arguments
| x | a right-sided formula giving the variable on the x-axis, numeric or date type | 
| y | a right-sided formula giving the variable on the x-axis, numeric type | 
| data | dataframe containing the data for the chart; if not  | 
| key | string, the title of the line chart | 
| color | string, the color of the line chart | 
| area | Boolean, whether to turn the line chart into a filled area chart | 
Value
A list, for usage in lineChart.
Note
The color can be given by the name of a R color, the name of a CSS
color, e.g. "lime" or "fuchsia", an HEX code like
"#ff009a", a RGB code like "rgb(255,100,39)", or a HSL code
like "hsl(360,11,255)".
Line chart with focus
Description
Create a HTML widget displaying a line chart with a focus tool.
Usage
lineFocusChart(
  data,
  xAxisTitle = "x",
  yAxisTitle = "y",
  margins = list(l = 90),
  duration = 500,
  useInteractiveGuideline = FALSE,
  xAxisTickFormat = ".0f",
  yAxisTickFormat = ".02f",
  xLabelsFontSize = "0.75rem",
  yLabelsFontSize = "0.75rem",
  legendPosition = "top",
  interpolate = "linear",
  xRange = NULL,
  yRange = NULL,
  rightAlignYaxis = FALSE,
  tooltipFormatters = list(value = NULL, header = NULL, key = NULL),
  tooltipTransitions = TRUE,
  tooltipShadow = TRUE,
  width = "100%",
  height = NULL,
  elementId = NULL
)
Arguments
| data | data used for the chart; it must be a list created with
 | 
| xAxisTitle | string, the title of the x-axis | 
| yAxisTitle | string, the title of the y-axis | 
| margins | a named list defining the margins, with names  | 
| duration | transition duration in milliseconds | 
| useInteractiveGuideline | Boolean, a guideline and synchronized tooltips | 
| xAxisTickFormat | a d3 formatting string for the ticks on the x-axis; a d3 time formatting string if the x-values are dates, see d3.time.format | 
| yAxisTickFormat | a d3 formatting string for the ticks on the y-axis | 
| xLabelsFontSize | a CSS measure, the font size of the labels on the x-axis | 
| yLabelsFontSize | a CSS measure, the font size of the labels on the y-axis | 
| legendPosition | string, the legend position,  | 
| interpolate | interpolation type, a string among  | 
| xRange | the x-axis range, a length two vector of the same type as the
x-values, or  | 
| yRange | the y-axis range, a numeric vector of length 2, or
 | 
| rightAlignYaxis | Boolean, whether to put the y-axis on the right side instead of the left | 
| tooltipFormatters | formatters for the tooltip; each formatter must
be  
 | 
| tooltipTransitions | Boolean, whether to style the tooltip with a fade effect | 
| tooltipShadow | Boolean, whether to style the tooltip with a shadow | 
| width | width of the chart container, must be a valid CSS measure | 
| height | height of the chart container, must be a valid CSS measure | 
| elementId | an id for the chart container, usually useless | 
Value
A HTML widget displaying a line chart with a focus tool.
Examples
library(Rnvd3)
dat1 <-
  lineChartData(x = ~ 1:100, y = ~ sin(1:100/10), key = "Sine wave", color = "lime")
dat2 <-
  lineChartData(x = ~ 1:100, y = ~ sin(1:100/10)*0.25 + 0.5,
                key = "Another sine wave", color = "red")
dat <- list(dat1, dat2)
lineFocusChart(dat)
Multibar chart
Description
HTMLwidget displaying a multibar chart.
Usage
multiBarChart(
  data,
  formula,
  by,
  palette = "viridis",
  xAxisTitle = NULL,
  yAxisTitle = NULL,
  margins = list(b = 100, l = 70),
  duration = 1300,
  rotateLabels = 0,
  groupSpacing = 0.1,
  xAxisTitleDistance = 35,
  yAxisTitleDistance = -5,
  yAxisShowMaxMin = FALSE,
  yAxisTickFormat = ".0f",
  xLabelsFontSize = "1rem",
  yLabelsFontSize = "1rem",
  rightAlignYaxis = FALSE,
  reduceXticks = FALSE,
  staggerLabels = FALSE,
  wrapLabels = FALSE,
  useInteractiveGuideline = FALSE,
  tooltipFormatters = list(value = NULL, header = NULL, key = NULL),
  tooltipTransitions = TRUE,
  tooltipShadow = TRUE,
  radioButtonMode = FALSE,
  legendTitle = NULL,
  legendHjust = -20,
  width = "100%",
  height = NULL,
  elementId = NULL
)
Arguments
| data | dataframe used for the chart | 
| formula | a two-sided formula like  | 
| by | string, the "by" variable; must be a column name of  | 
| palette | this can be either the name of a viridis color palette, e.g.
 | 
| xAxisTitle | a title for the x-axis; if  | 
| yAxisTitle | a title for the y-axis; if  | 
| margins | a named list defining the margins, with names  | 
| duration | duration of the transition, a number of milliseconds | 
| rotateLabels | a number, the angle of rotation of the labels of the x-axis (in degrees) | 
| groupSpacing | a number, controls the distance between groups of bars | 
| xAxisTitleDistance | a number, controls the distance between the x-axis and its title | 
| yAxisTitleDistance | a number, controls the distance between the y-axis and its title | 
| yAxisShowMaxMin | Boolean, whether to show the min and the max on the y-axis | 
| yAxisTickFormat | a d3 formatting string for the y-axis; see d3.format | 
| xLabelsFontSize | a CSS measure, the font size of the labels on the x-axis | 
| yLabelsFontSize | a CSS measure, the font size of the labels on the y-axis | 
| rightAlignYaxis | Boolean, whether to put the y-axis on the right side instead of the left | 
| reduceXticks | Boolean, whether to reduce the ticks on the x-axis so that the x-labels are less likely to overlap | 
| staggerLabels | Boolean, whether to make the x-labels stagger at different distances from the axis so they're less likely to overlap | 
| wrapLabels | Boolean, whether to split long x-labels by new lines in order to prevent overlapping | 
| useInteractiveGuideline | Boolean, other kind of tooltips: sets the chart to use a guideline and floating tooltip instead of requiring the user to hover over specific hotspots | 
| tooltipFormatters | formatters for the tooltip; each formatter must
be  
 | 
| tooltipTransitions | Boolean, whether to style the tooltip with a fade effect | 
| tooltipShadow | Boolean, whether to style the tooltip with a shadow | 
| radioButtonMode | Boolean, whether to authorize only one selection in
the legend (i.e. only one level of the ' | 
| legendTitle | a title for the legend, or  | 
| legendHjust | horizontal adjustment of the legend title | 
| width | width of the chart container, must be a valid CSS measure | 
| height | height of the chart container, must be a valid CSS measure | 
| elementId | an id for the chart container; commonly useless | 
Value
A htmlwidget displaying a grouped/stacked bar chart.
Note
In Shiny, you can style the axis titles with the help of CSS; see the
shiny example. It is also possible outside of Shiny;
see the second example below, where we set the CSS with the help of
prependContent.
Examples
library(Rnvd3)
# in this example we use the tooltip formatters for styling only; we could
# achieve the same result with the help of CSS
dat <- reshape2::melt(
  apply(HairEyeColor, c(1, 2), sum), value.name = "Count"
)
multiBarChart(
  dat, Count ~ Eye, "Hair",
  tooltipFormatters = list(
    value = JS(
      "function(x){",
      "  return '<span style=\"color:red;\">' + x + '</span>';",
      "}"
    ),
    header = JS(
      "function(x){",
      "  return '<span style=\"color:green;\">' + x + '</span>';",
      "}"
    ),
    key = JS(
      "function(x){",
      "  return '<i style=\"color:blue;\">' + x + '</i>';",
      "}"
    )
  )
)
# style axis titles with CSS ####
library(htmltools)
CSS <- HTML(
  ".nvd3 .nv-axis.nv-x text.nv-axislabel,
   .nvd3 .nv-axis.nv-y text.nv-axislabel {
     font-size: 2rem;
     fill: red;
  }"
)
widget <- multiBarChart(
  dat, Count ~ Eye, "Hair", palette = "turbo"
)
prependContent(
  widget,
  tags$style(CSS)
)
Shiny bindings for rnvd3
Description
Output and render functions for using rnvd3 widgets
within Shiny applications and interactive Rmd documents.
Usage
rnvd3Output(outputId, width = "100%", height = "400px")
renderRnvd3(expr, env = parent.frame(), quoted = FALSE)
Arguments
| outputId | output variable to read from | 
| width,height | must be a valid CSS unit (like  | 
| expr | an expression that generates a  | 
| env | the environment in which to evaluate  | 
| quoted | is  | 
Value
rnvd3Output returns an output element that can be included
in a Shiny UI definition, and renderRnvd3 returns a
shiny.render.function object that can be included in a Shiny server
definition.
Examples
library(Rnvd3)
library(shiny)
dat <- reshape2::melt(
  apply(HairEyeColor, c(1, 2), sum), value.name = "Count"
)
CSS <- HTML(
  "body {
    overflow: overlay;
  }
  /* style axis titles */
  .nvd3 .nv-axis.nv-x text.nv-axislabel,
   .nvd3 .nv-axis.nv-y text.nv-axislabel {
     font-size: 3rem;
     fill: red;
  }
  /* style the tooltip */
  .nvtooltip .value {
    color: red;
  }
  .nvtooltip .x-value {
    color: green;
  }
  .nvtooltip .key {
    color: blue;
    font-style: italic;
  }
  "
)
ui <- fluidPage(
  tags$head(tags$style(CSS)),
  br(),
  fluidRow(
    column(
      9,
      rnvd3Output("mychart", width = "100%", height = "500px")
    ),
    column(
      3,
      tags$h3("Chart state:"),
      verbatimTextOutput("state")
    )
  )
)
server <- function(input, output, session){
  output[["mychart"]] <- renderRnvd3({
    multiBarChart(
      dat, Count ~ Eye, "Hair", palette = "viridis",
      xLabelsFontSize = "2rem", yLabelsFontSize = "2rem"
    )
  })
  output[["state"]] <- renderPrint({
    input[["mychart_state"]]
  })
}
if(interactive()){
  shinyApp(ui, server)
}