The dimple package is a light htmlwidgets wrapper around the dimple javascript chart library (which is itself a wrapper around d3.js).

Installation

The dimple package is currently only available by installing from GitHub.

devtools::install_github("Bart6114/dimple")

Chart Types

There is an example dataset sales available in the package that is used to generate the below examples.

library(dimple)
head(sales[,1:5])
##         Date  Month      Channel    Owner   Brand
## 1 01/01/2011 Jan-11 Hypermarkets Aperture   Delta
## 2 01/01/2011 Jan-11 Hypermarkets Aperture     Eta
## 3 01/01/2011 Jan-11 Hypermarkets Aperture Omicron
## 4 01/01/2011 Jan-11 Hypermarkets Aperture Omicron
## 5 01/01/2011 Jan-11 Hypermarkets Aperture Omicron
## 6 01/01/2011 Jan-11 Hypermarkets Aperture Omicron

Bar Charts

Vertical Bar

dimple(sales,
       xCategory="Month",
       xOrderRule="Date",
       yMeasure="Unit.Sales")

Vertical Stacked Bar

dimple(sales,
       xCategory="Month",
       xOrderRule="Date",
       yMeasure="Unit.Sales",
       series="Channel")

Vertical 100% Bar

dimple(sales,
       xCategory="Month",
       xOrderRule="Date",
       yPct="Unit.Sales",
       series="Channel")

Vertical Grouped Bar

dimple(sales,
       xCategory=c("Price.Tier", "Channel"),
       yMeasure="Unit.Sales")

Vertical Stacked Grouped Bar

dimple(sales,
       xCategory=c("Price.Tier", "Channel"),
       yMeasure="Unit.Sales",
       series="Owner",
       legend=TRUE)

Vertical 100% Grouped Bar

dimple(sales,
       xCategory=c("Price.Tier", "Channel"),
       yPct="Unit.Sales",
       series="Owner",
       legend=TRUE)

Horizontal Bar

dimple(sales,
       yCategory="Month",
       yOrderRule="Date",
       xMeasure="Unit.Sales")

Horizontal Stacked Bar

dimple(sales,
       yCategory="Month",
       yOrderRule="Date",
       xMeasure="Unit.Sales",
       series="Channel")

Horizontal Stacked Bar

dimple(sales,
       yCategory="Month",
       yOrderRule="Date",
       xPct="Unit.Sales",
       series="Channel")

Block Matrix

dimple(sales,
       xCategory=c("Channel", "Price.Tier"),
       yCategory="Owner",
       series="Price.Tier",
       legend=TRUE)

Horizontal Floating Bars

dimple(sales,
       xMeasure="Unit.Sales",
       yCategory="Month",
       yOrderRule="Date",
       series="Channel",
       stacked = FALSE,
       legend=TRUE)

Floating Bars

partial_data <-
  subset(sales, Month == "Dec-11")

dimple(partial_data,
       xMeasure="Price.Monthly.Change",
       yMeasure="Distribution.Monthly.Change",
       yOrderRule="Date",
       series=c("SKU","Channel"),
       stacked = FALSE, 
       legend=TRUE)

Pie Charts

Pie Chart

dimple(sales,
       pMeasure="Unit.Sales",
       series="Owner",
       legend=TRUE, 
       chartType="pie")

Pie Matrix

dimple(sales, 
       xCategory="Price.Tier",
       yCategory="Pack.Size",
       pMeasure="Unit.Sales",
       series="Owner",
       legend=TRUE,
       chartType="pie",
       piesRadius = 25)

Scatter Pie

partial_data <-
  subset(sales, Date == "01/12/2012")

dimple(partial_data,
       xMeasure="Price.Monthly.Change",
       yMeasure="Unit.Sales.Monthly.Change",
       pMeasure="Operating.Profit",
       series=c("Owner","Channel"),
       legend=TRUE,
       chartType="pie",
       piesRadius = 20)

Scatter Charts

Scatter

partial_data <-
  subset(sales, Date == "01/12/2012")

dimple(partial_data,
       xMeasure="Unit.Sales",
       yMeasure="Operating.Profit",
       series=c("SKU","Channel"),
       legend=TRUE,
       chartType="bubble")

Vertical Lollipop

dimple(sales,
       xCategory="Month",
       xOrderRule = "Date",
       yMeasure="Unit.Sales",
       series="Channel",
       legend=TRUE,
       chartType="bubble")

Bubble Charts

Bubble

partial_data <-
  subset(sales, Date == "01/12/2012")

dimple(partial_data,
       xMeasure="Unit.Sales.Monthly.Change",
       yMeasure="Price.Monthly.Change",
       zMeasure="Operating.Profit",
       series=c("SKU","Channel"),
       legend=TRUE,
       chartType="bubble")

Bubble Matrix

dimple(sales,
       xCategory=c("Channel","Price.Tier"),
       yCategory="Owner",
       zMeasure="Distribution",
       series="Price.Tier",
       legend=TRUE,
       chartType="bubble",
       seriesAggregate = "max",
       zOverrideMax = 200)

Area Charts

Area

dimple(sales,
       xCategory="Month",
       xOrderRule = "Date",
       yMeasure="Unit.Sales",
       chartType="area")

Stacked Area

partial_data <-
  subset(sales, Owner %in% c("Aperture","Black Mesa"))

dimple(partial_data,
       xCategory="Month",
       xOrderRule = "Date",
       yMeasure="Unit.Sales",
       series="Channel",
       chartType="area",
       legend=TRUE)

100% Stacked Area

partial_data <-
  subset(sales, Owner %in% c("Aperture","Black Mesa"))

dimple(partial_data,
       xCategory="Month",
       xOrderRule = "Date",
       yPct="Unit.Sales",
       series="Channel", 
       chartType="area",
       legend=TRUE)

Grouped Stacked Area

partial_data <-
  subset(sales, Owner %in% c("Aperture","Black Mesa"))

dimple(partial_data,
       xCategory=c("Owner","Month"),
       xOrderRule = "Date",
       yMeasure="Unit.Sales", 
       series="SKU", 
       chartType="area", 
       legend=TRUE, 
       legendX=430, 
       legendY=20, 
       legendWidth=100, 
       legendHeight=300, 
       legendHorizontalAlign = "left",
       boundsX=70,
       boundsY=30, 
       boundsWidth=340, 
       boundsHeight=330,
       seriesLineWeight = 1, 
       seriesBarGap = 0.05)

Line Charts

Single Line

partial_data <-
  subset(sales, Owner %in% c("Aperture", "Black Mesa"))
  
dimple(sales, 
       xCategory="Month",
       xOrderRule = "Date",
       yMeasure="Unit.Sales", 
       chartType="line")

Multiple Line

partial_data <-
  subset(sales, Owner %in% c("Aperture", "Black Mesa"))
  
dimple(partial_data,
       xCategory="Month", 
       xOrderRule = "Date", 
       yMeasure="Unit.Sales", 
       series="Channel",
       chartType="line")

Grouped Single Line

partial_data <-
  subset(sales, Owner %in% c("Aperture", "Black Mesa"))
  
dimple(partial_data, 
       xCategory=c("Owner", "Month"), 
       xGroupOrderRule = "Date", 
       yMeasure="Unit.Sales", series="Owner",
       chartType="line")

Ring Charts

Ring Chart

dimple(sales,
       pMeasure="Unit.Sales",
       series="Owner",
       legend=TRUE, 
       chartType="pie",
       ringInnerRadius="50%")

Grouped Lollipop Ring

dimple(sales, 
       xCategory=c("Price.Tier","Channel"),
       yMeasure="Unit.Sales",
       pMeasure="Unit.Sales",
       series="Pack.Size",
       legend=TRUE, 
       chartType="pie",
       ringInnerRadius=20,
       ringOuterRadius=30)

Step Charts

Single Step Line

partial_data <-
  subset(sales, Owner %in% c("Aperture", "Black Mesa"))

dimple(partial_data, 
       xCategory="Month",
       yMeasure="Unit.Sales",
       xOrderRule="Date",
       chartType="step")

Multiple Step Line

partial_data <-
  subset(sales, Owner %in% c("Aperture", "Black Mesa"))

dimple(partial_data, 
       xCategory="Month",
       yMeasure="Unit.Sales",
       xOrderRule="Date",
       chartType="step",
       series="Channel",
       legend=TRUE)

Grouped Step Line

partial_data <-
  subset(sales, Owner %in% c("Aperture", "Black Mesa"))

dimple(partial_data, 
       xCategory=c("Owner", "Month"),
       yMeasure="Unit.Sales",
       xOrderRule="Date",
       chartType="step",
       series="Owner",
       legend=TRUE,
       seriesBarGap = 0.05)

Step Area Charts

Single Step Area

partial_data <-
  subset(sales, Owner %in% c("Aperture", "Black Mesa"))

dimple(partial_data, 
       xCategory="Month",
       yMeasure="Unit.Sales",
       xOrderRule="Date",
       chartType="steparea")

Multiple Step Area

partial_data <-
  subset(sales, Owner %in% c("Aperture", "Black Mesa"))

dimple(partial_data, 
       xCategory="Month",
       yMeasure="Unit.Sales",
       xOrderRule="Date",
       chartType="steparea",
       series="Channel",
       seriesLineWeight = 1,
       legend=TRUE)

100% Vertical Step Area

partial_data <-
  subset(sales, Owner %in% c("Aperture", "Black Mesa"))

dimple(partial_data, 
       xPct="Unit.Sales",
       yCategory="Month",
       yOrderRule="Date",
       chartType="steparea",
       series="Channel",
       seriesLineWeight = 1,
       legend=TRUE)

Shiny

You can also use dimple charts in shiny. There is an example included in the package. Simply run dimple_shiny(). Below you can see the content of the function.

dimple_shiny
## function(){
##   server <- function(input, output) {
##     output$dimple <- renderdimple({
##       dimple(sales,
##              xCategory="Month",
##              xOrderRule="Date",
##              yMeasure=input$yvar)
##     })
## 
## 
##   }
## 
##   ui <- fluidPage(
##     sidebarLayout(
##       sidebarPanel(
##         selectInput("yvar", "measurement variable", choices = c("Cost.of.Sales",
##                                                                 "Cost.of.Sales.Monthly.Change",
##                                                                 "Operating.Profit.Monthly.Change",
##                                                                 "Price.Monthly.Change"))
##       ),
##       mainPanel(dimpleOutput("dimple"))
##     )
##   )
## 
##   shinyApp(ui = ui, server = server)
## }
## <environment: namespace:dimple>