Provides a suite of functions to help ease the use of 'd3.js' in R. These helpers include 'htmltools::htmlDependency' functions, hierarchy builders, and conversion tools for 'partykit', 'igraph,' 'table', and 'data.frame' R objects into the 'JSON' that 'd3.js' expects.
Please see this Building Widgets blog post Why d3r?.
d3r
is on CRAN, so install with install.packages("d3r")
or for the
absolute latest use devtools
.
devtools::install_github("timelyportfolio/d3r")
d3r
makes d3.js
dependency injection in R easy with d3_dep_v3()
,
d3_dep_v4()
, and d3_dep_v5()
. 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_v5()
)
)
# or include directly in a taglist; I prefer this method.
browsable(
tagList(
h1("I have d3 version ", span(id="version")),
tags$script("d3.select('#version').text(d3.version)"),
d3_dep_v5()
)
)
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
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.
5.8.0
5.7.0
5.5.0
5.1.0
4.12.0
4.11.0
d3_nest()
to work with new tidyr.d3_dep_jetpack()
added. Essentially the same as d3_dep_v4(), but with a number of convenience functions added. Learn more by checking out the d3-jetpack github page.
update d3v4 to 4.10.0
(BREAKING) d3_table weight column is now named value to be consistent with the newest d3-sankey plugin commit.
Use unpkg.com for online dependencies
4.9.1
4.8.0
dplyr
4.6.0
d3_v8()
convenience function to return V8
context with d3.js loaded4.4.4
add colname
to return value (see commit)
improve NA
child promotion for deeply nested hierarchies
id
to name
(see issue)