Note that there are some explanatory texts on larger screens.

plurals
  1. POMoving Scatter Plot Circles With Context Zooming And Brush In D3
    primarykey
    data
    text
    <p>I am trying to create a Focus+Context+Tooltip graph based on d3 example of <a href="http://bl.ocks.org/1667367" rel="nofollow">http://bl.ocks.org/1667367</a>. I have got the basic charts working but when I try to zoom into an area using focus chart, my 'circles' which I plan to use for tooltip do not move. This is my code</p> <pre><code>var margin = {top: 10, right: 10, bottom: 100, left: 40}, margin2 = {top: 430, right: 10, bottom: 20, left: 40}, width = 960 - margin.left - margin.right, height = 500 - margin.top - margin.bottom, height2 = 500 - margin2.top - margin2.bottom; var data = [{ 'Wed Jan 23 00:00:00 IST 2013': 3383387 }, { 'Thu Jan 24 00:00:00 IST 2013': 3883387 }, { 'Fri Jan 25 00:00:00 IST 2013': 4383387 }, { 'Sat Jan 26 00:00:00 IST 2013': 2383387 }, { 'Sun Jan 27 00:00:00 IST 2013': 5383387 }, { 'Mon Jan 28 00:00:00 IST 2013': 2283387 }]; var format = d3.time.format("%a %b %d %H:%M:%S IST %Y"); var parseDate = d3.time.format("%b %Y").parse; var x = d3.time.scale().range([0, width]), x2 = d3.time.scale().range([0, width]), y = d3.scale.linear().range([height, 0]), y2 = d3.scale.linear().range([height2, 0]); var xAxis = d3.svg.axis().scale(x).orient("bottom"), xAxis2 = d3.svg.axis().scale(x2).orient("bottom"), yAxis = d3.svg.axis().scale(y).orient("left"); var brush = d3.svg.brush() .x(x2) .on("brush", brush); var area = d3.svg.area() .interpolate("monotone") .x(function(d) { return x(format.parse(d3.keys(d)[0])); }) .y0(height) .y1(function(d) { return y(d3.values(d)[0]); }); var area2 = d3.svg.area() .interpolate("monotone") .x(function(d) { return x2(format.parse(d3.keys(d)[0])); }) .y0(height2) .y1(function(d) { return y2(d3.values(d)[0]); }); var svg = d3.select("body").append("svg") .attr("width", width + margin.left + margin.right) .attr("height", height + margin.top + margin.bottom); svg.append("defs").append("clipPath") .attr("id", "clip") .append("rect") .attr("width", width) .attr("height", height); var focus = svg.append("g") .attr("transform", "translate(" + margin.left + "," + margin.top + ")"); var context = svg.append("g") .attr("transform", "translate(" + margin2.left + "," + margin2.top + ")"); x.domain(d3.extent(data.map(function(d) { return format.parse(d3.keys(d)[0]); }))); y.domain([0, d3.max(data.map(function(d) { return d3.values(d)[0]; }))]); x2.domain(x.domain()); y2.domain(y.domain()); focus.append("path") .datum(data) .attr("clip-path", "url(#clip)") .attr("d", area); focus.append("g") .attr("class", "x axis") .attr("transform", "translate(0," + height + ")") .call(xAxis); focus.append("g") .attr("class", "y axis") .call(yAxis); context.append("path") .datum(data) .attr("d", area2); context.append("g") .attr("class", "x axis") .attr("transform", "translate(0," + height2 + ")") .call(xAxis2); context.append("g") .attr("class", "x brush") .call(brush) .selectAll("rect") .attr("y", -6) .attr("height", height2 + 7); focus.append("g").selectAll('dot') .data(data) .enter().append("svg:circle") .attr("cx",function(d){ return x(format.parse(d3.keys(d)[0]));}) .attr("cy", function(d){ return y(d3.values(d)[0]);}) .attr("r", function(d){ return 4;}) .on('mouseover', function(d){ d3.select(this).attr('r', 8)}) .on('mouseout', function(d){ d3.select(this).attr('r', 4)}); function brush() { x.domain(brush.empty() ? x2.domain() : brush.extent()); focus.select("path").attr("d", area); focus.select(".x.axis").call(xAxis); focus.select("circle").attr("cx",function(d){ return x(format.parse(d3.keys(d)[0]));}).attr("cy", function(d){ return y(d3.values(d)[0]);}); } </code></pre> <p>I have created a fiddle for this here: <a href="http://jsfiddle.net/PyvZ7/" rel="nofollow">http://jsfiddle.net/PyvZ7/</a> . Any help or clues will be great ! Thanks !</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload