Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>To update your data you will just need to select the svg elements again and rebind the data. In your example you are already selecting the <code>#barchart</code>, now you just need to rebind the data. And you can do that in the same way you did it when you first created the svg Elements. So something like this should do the trick:</p> <pre><code>var updatebar = svg.selectAll("#barchart"); .data(newdata) .transition() .duration(500) ... (etc.) </code></pre> <p>Here you can find a more detailed explaination: <a href="http://chimera.labs.oreilly.com/books/1230000000345/ch09.html#_updating_data" rel="noreferrer">http://chimera.labs.oreilly.com/books/1230000000345/ch09.html#_updating_data</a></p> <p>Update:</p> <p>Ok, unfortunately I cannot use Fiddle so I just post my working code here. As far as I could see you have a problem with your selectAll, because there is no element called <code>.effort</code>. Here is the updated code for your redraw-function:</p> <pre><code>function redraw() { var effort = []; var obj = { pfte: "20", efte: "50", qName: "Q1" }; var obj2 = { pfte: "10", efte: "13", qName: "Q2" }; effort[0] = obj; effort[1] = obj2; var newDataSet = new Object(); newDataSet.effort = effort; color.domain(d3.keys(newDataSet.effort[0]).filter(function (key) { return key !== "qName"; })); effortDataSet = newDataSet.effort; effortDataSet.forEach(function (d) { var y0 = 0; d.effortHr = color.domain().map(function (name) { return { name: name, y0: y0, y1: y0 += +d[name] }; }); d.total = d.effortHr[d.effortHr.length - 1].y1; }); state = svg.selectAll(".g") .data(effortDataSet) .attr("class", "g") .attr("transform", function (d) { return "translate(" + x(d.qName) + ",0)"; }); state = state.selectAll("rect") .data(function (d) { return d.effortHr; }) .attr("width", x.rangeBand()) .attr("y", function (d) { return y(d.y1); }) .attr("height", function (d) { //console.log(y(d.y0) - y(d.y1)); return y(d.y0) - y(d.y1); }) .style("fill", function (d) { return color(d.name); }); } </code></pre>
    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.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      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