UNPKG

dc

Version:

A multi-dimensional charting library built to work natively with crossfilter and rendered using d3.js

85 lines (72 loc) 2.71 kB
<!DOCTYPE html> <html lang="en"> <head> <title>dc.js - Click a limit on a histogram</title> <meta charset="UTF-8"> <link rel="stylesheet" type="text/css" href="../css/bootstrap.min.css"> <link rel="stylesheet" type="text/css" href="../css/dc.css"/> </head> <body> <div class="container"> <script type="text/javascript" src="header.js"></script> <div id="test"></div> <script type="text/javascript" src="../js/promise-polyfill.js"></script> <script type="text/javascript" src="../js/fetch.umd.js"></script> <script type="text/javascript" src="../js/d3.js"></script> <script type="text/javascript" src="../js/crossfilter.js"></script> <script type="text/javascript" src="../js/dc.js"></script> <script type="text/javascript"> var chart = dc.lineChart("#test"); d3.csv("morley.csv").then(function(experiments) { experiments.forEach(function(x) { x.Speed = +x.Speed; }); var ndx = crossfilter(experiments), runDimension = ndx.dimension(function(d) {return +d.Run;}), speedSumGroup = runDimension.group().reduceSum(function(d) {return d.Speed * d.Run / 1000;}); var x_vert; chart .width(768) .height(480) .x(d3.scaleLinear().domain([0,20])) .renderArea(true) .brushOn(false) .renderDataPoints(true) .clipPadding(10) .yAxisLabel("This is the Y Axis!") .dimension(runDimension) .group(speedSumGroup) .on('pretransition', function(chart) { chart.svg().on('click', function() { var bound = chart.root().node().getBoundingClientRect(); x_vert = chart.x().invert(d3.event.clientX - bound.left - chart.margins().left); console.log('clicked', x_vert); chart.redraw(); }); // draw a line if x_vert is set var extra_data = x_vert !== undefined ? [ {x: chart.x()(x_vert) + chart.margins().left, y: chart.margins().top}, {x: chart.x()(x_vert) + chart.margins().left, y: chart.margins().top + chart.effectiveHeight()} ] : []; var line = d3.line() .x(function(d) { return d.x; }) .y(function(d) { return d.y; }) .curve(d3.curveLinear); var chartBody = chart.select('g'); var path = chartBody.selectAll('path.extra').data([extra_data]); path = path.enter() .append('path') .attr('class', 'extra') .attr('stroke', 'red') .attr('id', 'oeLine') .attr("stroke-width", 1) .style("stroke-dasharray", ("10,3")) .merge(path); path.attr('d', line); }); chart.render(); }); </script> </div> </body> </html>