javascript - Hyperlink chart bars using D3 -



javascript - Hyperlink chart bars using D3 -

i using d3 toolkit create stacked bar graph of data. want link bars separate page more detail underlying info bar. can't figure out how turn bars hyperlinks. the code below based on demo have been tinkering with. when inspect code in google chrome looks right bars aren't clickable. tremendous in advance ideas , suggestions on this!

source, attempting add together link google each bar:

<!doctype html> <meta charset="utf-8"> <style> body { font: 10px sans-serif; } .axis path, .axis line { fill: none; stroke: #000; shape-rendering: crispedges; } .bar { fill: steelblue; } .x.axis path { display: none; } </style> <body> <script src="d3.min.js"></script> <script> var margin = {top: 20, right: 20, bottom: 30, left: 40}, width = 960 - margin.left - margin.right, height = 500 - margin.top - margin.bottom; var x = d3.scale.ordinal() .rangeroundbands([0, width], .1); var y = d3.scale.linear() .rangeround([height, 0]); var color = d3.scale.ordinal() .range(["#98abc5", "#8a89a6", "#7b6888", "#6b486b", "#a05d56", "#d0743c", "#ff8c00"]); var xaxis = d3.svg.axis() .scale(x) .orient("bottom"); var yaxis = d3.svg.axis() .scale(y) .orient("left") .tickformat(d3.format(".2s")); var svg = d3.select("body").append("svg") .attr("width", width + margin.left + margin.right) .attr("height", height + margin.top + margin.bottom) .append("g") .attr("transform", "translate(" + margin.left + "," + margin.top + ")"); d3.csv("./data.csv", function(error, data) { color.domain(d3.keys(data[0]).filter(function(key) { homecoming key !== "state"; })); data.foreach(function(d) { var y0 = 0; d.ages = color.domain().map(function(name) { homecoming {name: name, y0: y0, y1: y0 += +d[name]}; }); d.total = d.ages[d.ages.length - 1].y1; }); data.sort(function(a, b) { homecoming b.total - a.total; }); x.domain(data.map(function(d) { homecoming d.state; })); y.domain([0, d3.max(data, function(d) { homecoming d.total; })]); svg.append("g") .attr("class", "x axis") .attr("transform", "translate(0," + height + ")") .call(xaxis); svg.append("g") .attr("class", "y axis") .call(yaxis) .append("text") .attr("transform", "rotate(-90)") .attr("y", 6) .attr("dy", ".71em") .style("text-anchor", "end") .text("population"); var state = svg.selectall(".state") .data(data) .enter().append("g") .attr("class", "g") .attr("xlink:href", function(d) { homecoming "http://www.google.com"; }) .attr("transform", function(d) { homecoming "translate(" + x(d.state) + ",0)"; }); state.selectall("rect") .data(function(d) { homecoming d.ages; }) .enter().append("rect") .attr("width", x.rangeband()) .attr("y", function(d) { homecoming y(d.y1); }) .attr("height", function(d) { homecoming y(d.y0) - y(d.y1); }) .style("fill", function(d) { homecoming color(d.name); }); state.append("a") .attr("xlink:href", "http://www.google.com") ; var legend = svg.selectall(".legend") .data(color.domain().slice().reverse()) .enter().append("g") .attr("class", "legend") .attr("transform", function(d, i) { homecoming "translate(0," + * 20 + ")"; }); legend.append("rect") .attr("x", width - 18) .attr("width", 18) .attr("height", 18) .style("fill", color); legend.append("text") .attr("x", width - 24) .attr("y", 9) .attr("dy", ".35em") .style("text-anchor", "end") .text(function(d) { homecoming d; }); }); </script>

i'm not sure can add together "a" html mark in svg.

but can add together event on each bar segment:

state.on('click',function(d){ ... great code ... })

javascript d3.js data-visualization

Comments

Popular posts from this blog

Delphi change the assembly code of a running process -

json - Hibernate and Jackson (java.lang.IllegalStateException: Cannot call sendError() after the response has been committed) -

C++ 11 "class" keyword -