'd3.js' Utilities for R

Helper functions for using 'd3.js' in R.


I tried to explain the purpose of d3r in this Building Widgets blog post Why d3r?.

d3r is not on CRAN, so install with devtools.

devtools::install_github("timelyportfolio/d3r")

d3r makes d3.js dependency injection in R easy with two functions d3_dep_v3() and d3_dep_v4(). These functions work well with htmltools::tags.

library(htmltools)
library(d3r)

# check web developer tools to see d3 is available
browsable(
  attachDependencies(
    tagList(),
    d3_dep_v4()
  )
)

Also, I will commit to keeping d3r up-to-date with d3.js, so you'll no longer need multiple copies of d3.js for your htmlwidgets. If you are a htmlwidget author, you will no longer need to worry every time d3.js gets a new release. See treebar lines for an example of using d3r with your htmlwidget.

Building d3.js hierarchies can be very difficult. d3r::d3_nest() will convert table and data.frame to a nested d3.js hierarchy ready for work with the d3-hierarchy.

d3_nest(as.data.frame(Titanic))

As another example, let's go from treemap to d3.js.

library(treemap)
library(d3r)

d3_nest(
  treemap::random.hierarchical.data(),
  value_cols = "x"
)

rpart and similar objects in R are very difficult to convert but make perfect subjects for d3 hierarchical layouts. d3_party helps convert these objects for easy usage with d3.js.

#devtools::install_github("timelyportfolio/d3treeR")

library(d3treeR)
library(d3r)

# example from ?rpart
data("kyphosis", package="rpart")
rp <-  rpart::rpart(
  Kyphosis ~ Age + Number + Start,
  data = kyphosis
)

# get the json hierarchy
d3_party(tree=rp)

# interactive plot with d3treeR
d3tree2(
  d3_party(tree=rp),
  celltext="description",
  valueField="n"
)

igraph to d3.js network of nodes and links is a very common conversion. d3r::d3_igraph will do this for you.

library(igraph)
library(d3r)

d3_igraph(igraph::watts.strogatz.game(1, 50, 4, 0.05))

I have a whole lot of ideas. Please let me know yours, and let's make this package great.

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

News

d3r 0.6.0

  • add colname to return value (see commit)

  • improve NA child promotion for deeply nested hierarchies

  • (BREAKING) change id to name (see issue)

d3r 0.5.0

  • (non-breaking) add offline argument to d3_dep_v3 and d3_dep_v4

d3r 0.4.2

  • CRAN release

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.

install.packages("d3r")

0.6.9 by Kent Russell, a month ago


https://github.com/timelyportfolio/d3r


Report a bug at https://github.com/timelyportfolio/d3r/issues


Browse source code at https://github.com/cran/d3r


Authors: Mike Bostock [aut, cph] (d3.js library in htmlwidgets/lib, http://d3js.org), Kent Russell [aut, cre] (R interface), Gregor Aisch [aut, cph] (d3-jetpack creator, https://github.com/gka/d3-jetpack), Adam Pearce [aut] (core contributor to d3-jetpack), Ben Ortiz [ctb]


Documentation:   PDF Manual  


BSD_3_clause + file LICENSE license


Imports dplyr, htmltools, tidyr

Suggests jsonlite, listviewer, purrr, testthat

Enhances igraph, partykit, rpart, treemap, V8


Imported by sunburstR.

Suggested by d3Tree.


See at CRAN