Skip to content

JonathanChiang/scatterD3

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

scatterD3 is an HTML R widget for interactive scatter plots visualization. It is based on the htmlwidgets R package and on the d3.js javascript library.

This is alpha software.

Features

scatterD3 currently provides the following features :

  • Display points and text labels
  • Possibility to map color and symbol with other variables (automatic legend)
  • Zoom with mouse wheel, pan with mouse while zoomed in
  • Ability to drag and move text labels
  • Customizable tooltips when hovering points
  • Points highlighting when hovering legend items

Here is a small preview of what you will get :

example

Installation

Not on CRAN yet :

devtools::install_github("juba/scatterD3")

Usage

Quick example of the scatterD3 function based on the mtcars dataset :

scatterD3(x = mtcars$wt, y = mtcars$mpg, lab = rownames(mtcars),
          col_var=mtcars$cyl, symbol_var = mtcars$am,
          xlab = "Weight", ylab = "Mpg", col_lab = "Cylinders",
          symbol_lab = "Manual transmission")

See help("scatterD3") for details about the different function arguments.

Shiny integration

Like every R HTML widget, shiny integration is straightforward. Furthermore, we provide some additional handlers to map form controls to SVG export and interactive effects (text size, points opacity and zoom reset). You just have to give the following id to your form controls :

  • #scatterD3-size : text size in points (numerical value)
  • #scatterD3-opacity : point ant text opacity (numerical value, 0 to 1)
  • #scatterD3-resetzoom : reset zoom to default on click
  • #scatterD3-download : link to download the currently displayed figure as an SVG file

Here is a minimal working example :

library(shiny)
runApp(shinyApp(
    ui=fluidPage(
      sidebarLayout(
        sidebarPanel(
          numericInput("scatterD3-size", "Labels size :", min = 2, max = 30, value = 10),
          numericInput("scatterD3-opacity", "Opacity :", min = 0, max = 1, value = 1, step=0.05),
          actionButton("scatterD3-resetzoom", "Reset Zoom"),
          tags$a(id="scatterD3-download", href="#", class="btn btn-default", "Download SVG")
        ),
        mainPanel(scatterD3Output("scatterPlot"))
      )
    ),
    server = function(input, output) {
      output$scatterPlot <- renderScatterD3({
        scatterD3(x=mtcars$wt,
                  y=mtcars$mpg,
                  lab=rownames(mtcars),
                  col_var=mtcars$cyl)
      })
    }
))

Which gives the following interface :

Shiny sample

About

R scatter plot htmlwidget based on D3.js

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 78.7%
  • R 19.4%
  • CSS 1.9%