D3
OG
Old school D3 from simpler times
All examples
By author
By category
About
quizzicol
Full window
Github gist
simple bar chart
Built with
blockbuilder.org
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>D3 Example</title> <script src="//cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/d3.min.js"></script> <link href='https://fonts.googleapis.com/css?family=Poiret+One' rel='stylesheet' type='text/css'> <style> .axis text { font-family: 'Poiret One', cursive; font-size: 16pt; } .axis .label { font-size: 26pt; } .axis path, .axis line { fill: none; stroke: #000; shape-rendering: crispEdges; } .y.axis path, .y.axis line { stroke: none; } </style> </head> <body> <script> var outerWidth = 500; var outerHeight = 250; var margin = { left: 130, top: 0, right: 0, bottom: 60 }; var barPadding = 0.2; var xColumn = "population"; var yColumn = "name"; var xAxisLabelText = "Population"; var xAxisLabelOffset = 55; var innerWidth = outerWidth - margin.left - margin.right; var innerHeight = outerHeight - margin.top - margin.bottom; var svg = d3.select("body").append("svg") .attr("width", outerWidth) .attr("height", outerHeight); var g = svg.append("g") .attr("transform", "translate(" + margin.left + "," + margin.top + ")"); var xAxisG = g.append("g") .attr("class", "x axis") .attr("transform", "translate(0," + innerHeight + ")") var xAxisLabel = xAxisG.append("text") .style("text-anchor", "middle") .attr("x", innerWidth / 2) .attr("y", xAxisLabelOffset) .attr("class", "label") .text(xAxisLabelText); var yAxisG = g.append("g") .attr("class", "y axis"); var xScale = d3.scale.linear().range( [0, innerWidth]); var yScale = d3.scale.ordinal().rangeBands([0, innerHeight], barPadding); var xAxis = d3.svg.axis().scale(xScale).orient("bottom") .ticks(5) // Use approximately 5 ticks marks. .tickFormat(d3.format("s")) // Use intelligent abbreviations, e.g. 5M for 5 Million .outerTickSize(0); // Turn off the marks at the end of the axis. var yAxis = d3.svg.axis().scale(yScale).orient("left") .outerTickSize(0); // Turn off the marks at the end of the axis. function render(data){ xScale.domain([0, d3.max(data, function (d){ return d[xColumn]; })]); yScale.domain( data.map( function (d){ return d[yColumn]; })); xAxisG.call(xAxis); yAxisG.call(yAxis); var bars = g.selectAll("rect").data(data); bars.enter().append("rect") .attr("height", yScale.rangeBand()); bars .attr("x", 0) .attr("y", function (d){ return yScale(d[yColumn]); }) .attr("width", function (d){ return xScale(d[xColumn]); }); bars.exit().remove(); } function type(d){ d.population = +d.population; return d; } d3.csv("geonames_cities_top3.csv", type, render); </script> </body> </html>
https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/d3.min.js