рд╣рдо 3D рдореЗрдВ рд░реЗрдВрдбрд░ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╛ рджреЛрд╕реНрддреЛрдВ рдХреЛ рдбреА 3 рдФрд░ рдереНрд░реАрдЬ рдХреИрд╕реЗ рдмрдирд╛рддреЗ рд╣реИрдВ

рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдбреА 3 рдФрд░ рдереНрд░реАрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрди рдЪреБрдХреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд▓реЗрдЦ рдЖрдкрдХреЛ рд░реЛрдЪрдХ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЗрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЧрддрд┐рд╢реАрд▓ рддреАрди рдЖрдпрд╛рдореА рджреГрд╢реНрдпреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдЧрд╛, рдЗрд╕ рд╕рд░рд▓ рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП:





рдкреИрд░ рдХрд╣рд╛рдБ рд╕реЗ рдмрдврд╝рддреЗ рд╣реИрдВ?



рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ, рд╣рдо рдХреЛрдбрдСрд░реНрдХреЗрд╕реНрдЯреНрд░рд╛ рдореЗрдВ рдПрдХ рдПрдПрд╕ 3 / рдбреАрдПрд╕рдПрд▓ рдХреЛрдбрдирд╛рдо "рдбреА 6" (рдбреА 3 + 3 рдбреА рд╕реЗ) рдкрд░ рдПрдХ рдбреА 3 рдкреЛрд░реНрдЯ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛ред рд╣рдорд╛рд░реЗ рдкреЛрд░реНрдЯ рдиреЗ рдХреЗрд╡рд▓ рд╕рдмрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рдбреА 3 рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрд╡рд░ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдПрдПрд╕ 3 "рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░" рдкрд░ рд▓реЛрдХрдкреНрд░рд┐рдп 3 рдбреА рдЗрдВрдЬрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред рдФрд░ рдпрджреНрдпрдкрд┐ рд╣рдо D6 рдХреЛ рдкреНрд░рдХрд╛рд╢ рдореЗрдВ рдирд╣реАрдВ рд▓рд╛рдП рд╣реИрдВ, 3 рдбреА рдХреЗ рд▓рд┐рдП рдбреА 3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдиреЗ рд╣рдорд╛рд░реЗ рджрд┐рдорд╛рдЧ рдХреЛ рдХрднреА рдирд╣реАрдВ рдЫреЛрдбрд╝рд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрджрд┐ рдЖрдк рдбреА 3 рдЧреИрд▓рд░реА рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╡рд╣рд╛рдВ рдПрдХ рднреА рддреНрд░рд┐-рдЖрдпрд╛рдореА рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рдорд┐рд▓реЗрдЧрд╛ред рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдбреА 3 рдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдбреЛрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддреНрдпрдзрд┐рдХ рдЯреНрдпреВрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдордирдорд╛рдиреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд▓рд╛рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкрд░реНрдпрд╛рдкреНрдд рдкреНрд░реЗрд░рдгрд╛ рдХреЗ рд╕рд╛рде, рд╣рдо рдЗрд╕реЗ рдордЬрдмреВрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рддреЛ рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ



рдЖрдЗрдП рдбреА 3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреНрд╡рд┐-рдЖрдпрд╛рдореА рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рдХреЗ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ (рдЗрд╕рдХреЗ рдмрд╛рдж рдХреЛрдб рдХреЛ рдбреА 3 [ 1 ] рдФрд░ [ 2 ] рдХреЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкрд╛рда рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдкрдардиреАрдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЫреЛрдЯрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ):

d3.select(".chart") .selectAll() .data(data) .enter().append("div") .style("width", function(d) { return d * 10 + "px"; }); 

рдпрд╣ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдореБрдЦреНрдп рдбреА 3 рддрд░реАрдХреЗ рдореИрдЬрд┐рдХ рдбреЛрдо-рдбрд┐рдкреЗрдВрдбреЗрдВрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ (рдЬреИрд╕реЗ .chart рдЪрдпрдирдХрд░реНрддрд╛ рдпрд╛ div рдЯреИрдЧ рдирд╛рдо) рдХреЛ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╣рдорд╛рд░реЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрддреНрдпрдВрдд рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдЗрди рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╣реИрдВред рдпреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдирдореВрдиреЛрдВ рдХреЗ рдкреБрди: рдЙрдкрдпреЛрдЧ рдЬреИрд╕реА рдЙрдмрд╛рдК рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрдж рд╣реИрдВред рд╣рдо рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдкрдиреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗ:

 function newDiv() { return document.createElement("div"); } var chart = { appendChild: function (child) { //      append()  newDiv() return document.getElementById("chartId") .appendChild(child); }, querySelectorAll: function () { //      selectAll() return []; } } d3.select( chart ) .selectAll() .data(data) .enter().append( newDiv ) .style("width", function(d) { return d * 10 + "px"; }); 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдордиреЗ 1) рдбреА 3 рдХреЛ рдирд┐рд░реНрджреЗрд╢ рджрд┐рдпрд╛ рдХрд┐ div рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдП, рдФрд░ 2) рдбреА 3 рдХреЛ рдЖрд╢реНрд╡рд╕реНрдд рдХрд┐рдпрд╛ рдХрд┐ рд╣рдорд╛рд░рд╛ рдЪрд╛рд░реНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдХ рдмрддрдЦ рд╣реИ ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдорд╛рд░реЗ рдХреЛрдб рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИред


рддреЛ 3 рдбреА рдХрд╛ рдХреНрдпрд╛?



рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ 3 рдбреА рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдорд╛рдирдХ рдЖрдЬ рддреАрди.js рд╣реИред рдпрджрд┐ рд╣рдо рдбреА 3 рдбреА рдореЗрдВ 3 рдбреА рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдбреА 3 рдХреЛ рддреАрди-рдЖрдпрд╛рдореА рддреАрди.рдЬреЗрдПрд╕ рд╡рд╕реНрддреБрдУрдВ рд╕реЗ рдЪрдпрди рдХреЗ рд╕рд╛рде рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо Object3D рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд░реАрдХреЗ рдЬреЛрдбрд╝реЗрдВрдЧреЗ:

 //     D3- .append()  .selectAll() THREE.Object3D.prototype.appendChild = function (c) { this.add(c); return c; }; THREE.Object3D.prototype.querySelectorAll = function () { return []; }; //   -  D3- .attr() THREE.Object3D.prototype.setAttribute = function (name, value) { var chain = name.split('.'); var object = this; for (var i = 0; i < chain.length - 1; i++) { object = object[chain[i]]; } object[chain[chain.length - 1]] = value; } 

рдпрд╣ рд╕рдмрд╕реЗ рд╕рд░рд▓ рддреНрд░рд┐-рдЖрдпрд╛рдореА рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ:

 function newBar () { return new THREE.Mesh( geometry, material ); } chart3d = new THREE.Object3D(); //  D3   3D  d3.select( chart3d ) .selectAll() .data(data) .enter().append( newBar ) .attr("position.x", function(d, i) { return 30 * (i - 3); }) .attr("position.y", function(d, i) { return d; }) .attr("scale.y", function(d, i) { return d / 10; }) 



рдХреНрдпрд╛ рд╡рд╣ рд╕рдм рд╣реИ?



рдмрд┐рд▓рдХреБрд▓ рдирд╣реАрдВред рдбреА 3 рдХреА рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП - рдбреЗрдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг - рд╣рдореЗрдВ рдЕрдкрдиреА рдЪрд╛рд▓ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рддрд╛рдХрд┐ рдбреА 3 "рд╡рд┐рд╢реЗрд╖рддрд╛" рдорд╛рдиреЛрдВ рдХреЛ рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдХрд░ рд╕рдХреЗ, рд╣рдореЗрдВ get3 рдХреЛ рдмрд╛рдВрдЯрдиреЗ рдХреА рд╡рд┐рдзрд┐ рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ 3 рдкреНрд░реЛрдЯреЗрдХреНрд╢рди рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛:

 THREE.Object3D.prototype.getAttribute = function (name) { var chain = name.split('.'); var object = this; for (var i = 0; i < chain.length - 1; i++) { object = object[chain[i]]; } return object[chain[chain.length - 1]]; } 

рджреВрд╕рд░реЗ, selectAll () рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрджреНрдпрддрди рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЪрдпрди рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ Object3D рдХреЗ рд╡рдВрд╢рдЬреЛрдВ рдХреЗ рдЪрдпрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 THREE.Object3D.prototype.querySelectorAll = function (selector) { var matches = []; var type = eval(selector); for (var i = 0; i < this.children.length; i++) { var child = this.children[i]; if (child instanceof type) { matches.push(child); } } return matches; } 

рд╣рдорд╛рд░реЗ рд╕реНрддрдВрднреЛрдВ рдХреЛ рдиреГрддреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП , рдЕрдм рдХреЗрд╡рд▓ рд╕рдордп-рд╕рдордп рдкрд░ рдбреЗрдЯрд╛ рдмрджрд▓рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ:

 var N = 9, v = 30, data = d3.range(9).map(next); function next () { return (v = ~~Math.max(10, Math.min(90, v + 20 * (Math.random() - .5)))); } setInterval(function () { data.shift(); data.push(next()); update(); }, 1500); function update () { //  D3     3D  var bars = d3.select( chart3d ) .selectAll("THREE.Mesh") .data(data); bars.enter().append( newBar ) .attr("position.x", function(d, i) { return 30 * (i - N/2); }); bars.transition() .duration(1000) .attr("position.y", function(d, i) { return d; }) .attr("scale.y", function(d, i) { return d / 10; }); } 

рддреЛ, рддреАрди рдХреЗ рд╕рд╛рде рдбреА 3 рдмрд╛рдБрдзрдиреЗ рдХрд╛ рд╕рд╛рдорд╛рдиреНрдп рд╕рд┐рджреНрдзрд╛рдВрддред рдЬреЗрдПрд╕ рдЖрдкрдХреЛ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП - рд╣рдо рдзреАрд░реЗ-рдзреАрд░реЗ рдбреА 3 рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рддрд░реАрдХреЗ рдЬреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рд╣рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ 3 рдбреА рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдлрд┐рдХреНрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рдХреЗ рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╣рдЯрд╛рдП рдЧрдП рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЪрдпрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред Remove3hild рд╡рд┐рдзрд┐ Object3D рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:

 THREE.Object3D.prototype.removeChild = function (c) { this.remove(c); } 

рдпрджрд┐ рдЖрдкрдиреЗ рд╣рдЯрд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдЯрд╛рдиреЗ () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ, рддреЛ рдЖрдк рдкрд╛рдПрдВрдЧреЗ рдХрд┐ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдХреНрдпреЛрдВ? рдбреА 3 рд╕реНрд░реЛрддреЛрдВ рдореЗрдВ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрддреНрддрд░ рдЖрд╕рд╛рди рд╣реИ - рд╣рдЯрд╛рдиреЗ () рд╡рд┐рдзрд┐ рдЪрдпрди рдХреЗ рдкреИрд░реЗрдВрдЯреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдкрдиреЗ рддрддреНрдХрд╛рд▓ рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╕реЗ рд╡рд╕реНрддреБ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИред рдЗрд╕реЗ рд╕рдВрднрд╡ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ appendChild рдХреЗ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ():

 THREE.Object3D.prototype.appendChild = function (c) { this.add(c); //   parentNode c.parentNode = this; return c; } 



рдкрд░рд┐рдгрд╛рдо



рдФрд░ рдЕрдВрдд рдореЗрдВ, рд╣рдореЗрдВ рдРрд╕реА рд╕реБрдВрджрд░рддрд╛ рдорд┐рд▓реА:

 var N = 9, t = 123, v = 30, data = d3.range(9).map(next); function next () { return { time: ++t, value: v = ~~Math.max(10, Math.min(90, v + 20 * (Math.random() - .5))) }; } function update () { //  D3  ,    3D  var bars = d3.select( chart3d ) .selectAll("THREE.Mesh") .data(data, function(d) { return d.time; }); bars.transition() .duration(1000) .attr("position.x", function(d, i) { return 30 * (i - N / 2); }) bars.enter().append( newBar ) .attr("position.x", function(d, i) { return 30 * (i - N / 2 + 1); }) .attr("position.y", 0) .attr("scale.y", 1e-3) .transition() .duration(1000) .attr("position.x", function(d, i) { return 30 * (i - N / 2); }) .attr("position.y", function(d, i) { return d.value; }) .attr("scale.y", function(d, i) { return d.value / 10; }) bars.exit().transition() .duration(1000) .attr("position.x", function(d, i) { return 30 * (i - N / 2 - 1); }) .attr("position.y", 0) .attr("scale.y", 1e-3) .remove() } 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдбреА 3 рдбреА рдХреЗ рд╕рд╛рде рдПрдХ рдмрдврд╝рд┐рдпрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЕрдЧрд░ рдЖрдк рдЗрд╕реЗ рдереЛрдбрд╝реА рдорджрдж рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдереНрд░реА.рдЬреЗрдПрд╕ рдЗрд╕рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдкреИрджрд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рджреЛрдиреЛрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рдЕрдкрдиреА рддрд╛рдХрдд рд╣реИ, рдФрд░ рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдиреЗ рдЖрдкрдХреЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рдХрд╛рдо рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рд╕рд╛рдордВрдЬрд╕реНрдпрдкреВрд░реНрдг рд░реВрдк рд╕реЗ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдорд╛рд░реНрдЧ рдЦреЛрд▓ рджрд┐рдпрд╛ рд╣реИред

Source: https://habr.com/ru/post/In200584/


All Articles