NVD3

# load rCharts package
require(rCharts); library(datasets); library(knitr)
## Loading required package: rCharts
# create dataframe with HairEyeColor data
haireye = as.data.frame(HairEyeColor)
# create a nPlot object
n1 <- nPlot(Freq ~ Hair, group = 'Eye', type = 'multiBarChart',
            data = subset(haireye, Sex == 'Male'))
# save the nPlot object to a html page
n1$print('chart2', include_assets = TRUE)
## <link rel='stylesheet' href=C:/Users/Brian/Documents/R/win-library/3.1/rCharts/libraries/nvd3/css/nv.d3.css>
## <link rel='stylesheet' href=C:/Users/Brian/Documents/R/win-library/3.1/rCharts/libraries/nvd3/css/rNVD3.css>
## <script type='text/javascript' src=C:/Users/Brian/Documents/R/win-library/3.1/rCharts/libraries/nvd3/js/jquery-1.8.2.min.js></script>
## <script type='text/javascript' src=C:/Users/Brian/Documents/R/win-library/3.1/rCharts/libraries/nvd3/js/d3.v3.min.js></script>
## <script type='text/javascript' src=C:/Users/Brian/Documents/R/win-library/3.1/rCharts/libraries/nvd3/js/nv.d3.min-new.js></script>
## <script type='text/javascript' src=C:/Users/Brian/Documents/R/win-library/3.1/rCharts/libraries/nvd3/js/fisheye.js></script> 
##  <style>
##   .rChart {
##     display: block;
##     margin-left: auto; 
##     margin-right: auto;
##     width: 800px;
##     height: 400px;
##   }  
##   </style>
## <div id = 'chart2' class = 'rChart nvd3'></div>
## <script type='text/javascript'>
##  $(document).ready(function(){
##       drawchart2()
##     });
##     function drawchart2(){  
##       var opts = {
##  "dom": "chart2",
## "width":    800,
## "height":    400,
## "x": "Hair",
## "y": "Freq",
## "group": "Eye",
## "type": "multiBarChart",
## "id": "chart2" 
## },
##         data = [
##  {
##  "Hair": "Black",
## "Eye": "Brown",
## "Sex": "Male",
## "Freq":             32 
## },
## {
##  "Hair": "Brown",
## "Eye": "Brown",
## "Sex": "Male",
## "Freq":             53 
## },
## {
##  "Hair": "Red",
## "Eye": "Brown",
## "Sex": "Male",
## "Freq":             10 
## },
## {
##  "Hair": "Blond",
## "Eye": "Brown",
## "Sex": "Male",
## "Freq":              3 
## },
## {
##  "Hair": "Black",
## "Eye": "Blue",
## "Sex": "Male",
## "Freq":             11 
## },
## {
##  "Hair": "Brown",
## "Eye": "Blue",
## "Sex": "Male",
## "Freq":             50 
## },
## {
##  "Hair": "Red",
## "Eye": "Blue",
## "Sex": "Male",
## "Freq":             10 
## },
## {
##  "Hair": "Blond",
## "Eye": "Blue",
## "Sex": "Male",
## "Freq":             30 
## },
## {
##  "Hair": "Black",
## "Eye": "Hazel",
## "Sex": "Male",
## "Freq":             10 
## },
## {
##  "Hair": "Brown",
## "Eye": "Hazel",
## "Sex": "Male",
## "Freq":             25 
## },
## {
##  "Hair": "Red",
## "Eye": "Hazel",
## "Sex": "Male",
## "Freq":              7 
## },
## {
##  "Hair": "Blond",
## "Eye": "Hazel",
## "Sex": "Male",
## "Freq":              5 
## },
## {
##  "Hair": "Black",
## "Eye": "Green",
## "Sex": "Male",
## "Freq":              3 
## },
## {
##  "Hair": "Brown",
## "Eye": "Green",
## "Sex": "Male",
## "Freq":             15 
## },
## {
##  "Hair": "Red",
## "Eye": "Green",
## "Sex": "Male",
## "Freq":              7 
## },
## {
##  "Hair": "Blond",
## "Eye": "Green",
## "Sex": "Male",
## "Freq":              8 
## } 
## ]
##   
##       if(!(opts.type==="pieChart" || opts.type==="sparklinePlus" || opts.type==="bulletChart")) {
##         var data = d3.nest()
##           .key(function(d){
##             //return opts.group === undefined ? 'main' : d[opts.group]
##             //instead of main would think a better default is opts.x
##             return opts.group === undefined ? opts.y : d[opts.group];
##           })
##           .entries(data);
##       }
##       
##       if (opts.disabled != undefined){
##         data.map(function(d, i){
##           d.disabled = opts.disabled[i]
##         })
##       }
##       
##       nv.addGraph(function() {
##         var chart = nv.models[opts.type]()
##           .width(opts.width)
##           .height(opts.height)
##           
##         if (opts.type != "bulletChart"){
##           chart
##             .x(function(d) { return d[opts.x] })
##             .y(function(d) { return d[opts.y] })
##         }
##           
##          
##         
##           
##         
## 
##         
##         
##         
##       
##        d3.select("#" + opts.id)
##         .append('svg')
##         .datum(data)
##         .transition().duration(500)
##         .call(chart);
## 
##        nv.utils.windowResize(chart.update);
##        return chart;
##       });
##     };
## </script>