Week 51 | functionplotR

This Week’s Widget - functionplotR

Mauricio Poppe has built a really amazing 2d d3-js-based function plotter function-plot. I think it has all sorts of helpful uses in R, so functionplotR will be this week’s htmlwidget. Note, I released a couple days early. I hope nobody minds.

Installation

This is not on CRAN, so to install we will need some help from devtools::install_github.

devtools::install_github("timelyportfolio/functionplotR")

Examples

I was able to replicate nearly all of the fantastic examples from the function-plot JavaScript library. For the sake of brevity, I’ll only include a couple here. Go here or ?functionplot to see all of them.

One Simple Equation

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

library(functionplotR)

functionplot("x + 2")

Multiple Simple Functions

There a couple ways to supply functions to functionplot. Below is the easiest but least flexible.

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

library(functionplotR)

functionplot(c("x + 2","x"))

With Some Options

function-plot gives us lots of options. Let’s use some of them to configure our plot from above.

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

library(functionplotR)

functionplot(
# use the more flexible but a little more confusing
#  way to provide functions
fn = list(
list( fn = "x + 2", color = "black" ),
list( fn = "x", color = "gray" )
),
yDomain = c(-4, 4),
xDomain = c(-4, 4),
width = 420,
height = 400
)

Function with Derivative

One of my favorite features of function-plot is the ability to plot interactive derivatives. It does require you to know the derivative though. With a quick Google, I think I now remember the derivative of cos(x).

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

library(functionplotR)

functionplot(
fn = list(
list(
fn = "cos(x)",
derivative = list(
fn = "-sin(x)",
updateOnMouseMove = TRUE
)
)
)
)

Thanks

Thanks Mauricio Poppe for the really special function-plot plotting library.

As always, thanks to

• Ramnath Vaidyanathan and RStudio for htmlwidgets
• all the contributors to R and JavaScript