<!DOCTYPE html> <html> <head> <title>d3-ez : Punch Card Example</title> <script src="https://d3js.org/d3.v4.min.js"></script> <script src="../build/d3-ez.js"></script> <link rel="stylesheet" type="text/css" href="../build/d3-ez.css" /> </head> <body> <div id="chartholder"></div> <br/> <div>Value: <span id="message"></span></div> <script type="text/javascript"> d3.json("data/netflix_isp_speed_index.json", function(error, json) { // Netflix Speed ISP Speed Index Source: https://ispspeedindex.netflix.com/country/uk/ var chart = d3.ez.chart.punchCard(); var legend = d3.ez.component.legend().title("Speed Index"); var title = d3.ez.component.title().mainText(json.Metadata.Title).subText(json.Metadata.Detail); // Convert json to d3-ez data format var data = d3.nest().key(function(d) { return d.ISP; }).entries(json.Data).map(function(obj) { obj.values = obj.values.map(function(values) { return { key: values.Month, value: values.Value }; }); return obj; }); // Create chart base var myChart = d3.ez.base() .width(750) .height(400) .chart(chart) .legend(legend) .title(title) .on("customValueMouseOver", function(d) { d3.select("#message").text(d.value); }) .on("customSeriesClick", function(d) { console.log(d); }); d3.select('#chartholder') .datum(data) .call(myChart); }); </script> </body> </html>