рд╢реБрдн рджрд┐рди, рдкреНрд░рд┐рдп рдкрд╛рдардХ!
рдкрд┐рдЫрд▓реА рдмрд╛рд░ рд╣рдордиреЗ рдПрдХ рдЗрдВрдЯрд░реЗрдХреНрдЯрд┐рд╡ рд╣реЙрд░рдкрд▓реЗрдЯ рдорд╛рдирдЪрд┐рддреНрд░ рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ рдерд╛, рдЕрдм рдореИрдВ рдХрд╛рд░реНрдп рдХреЛ рдереЛрдбрд╝рд╛ рдЬрдЯрд┐рд▓ рдХрд░рдиреЗ рдФрд░ рдкреГрдереНрд╡реА рдХреЗ рддреАрди-рдЖрдпрд╛рдореА рдореЙрдбрд▓ рдХреА рдУрд░ рдмрдврд╝рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВ, рдЬрд┐рд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЧреНрд▓реЛрдм рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЧреНрд▓реЛрдм рдХрд░реЗрдВрдЧреЗ:
рдПрд╕рд╡реАрдЬреА рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдХреИрдирд╡рд╕ рд╕рдВрд╕реНрдХрд░рдгред рджреЛрдиреЛрдВ рд╣реА рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╣рдо
d3.js рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рдЕрдкрдиреЗ рдлрд╛рдпрджреЗ рд╣реИрдВред рдореЗрд░реЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ,
рдмреНрд▓реВ рдкреНрд▓реИрдиреЗрдЯ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

рдФрд░ рдХреИрд╕реЗ рдорд╣рд╛рджреНрд╡реАрдкреЛрдВ рдФрд░ рдорд╣рд╛рд╕рд╛рдЧрд░реЛрдВ рдХреЗ рд╕рд╛рде рдЕрдкрдиреА
рджреБрдирд┐рдпрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдЯреМрддреА рдХреЗ рддрд╣рдд рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╢реБрд░реБрдЖрдд
рдкрд╣рд▓реЗ рд╣рдореЗрдВ рдЬрд┐рдпреЛрдбреЗрдЯрд╛ рдЦреЛрдЬрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдХреА рддрд░рд╣, рд╣рдо рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП
TopoJSON рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдЖрдк рдЗрд╕реЗ "рдХрд╛рд░реНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рдореИрдЯрд░реНрд╕" рдЕрдиреБрднрд╛рдЧ рдореЗрдВ
рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕
TopoJSON рдлрд╝рд╛рдЗрд▓
world-110m.json
m.json рд╣реИ, рдЬрд┐рд╕рдореЗрдВ 1: 110,000,000, рдпрд╛ 1 рд╕реЗрдореА = 1,100 рдХрд┐рдореА (1 1, = 1,736 рдореАрд▓) рдХреЗ рдкреИрдорд╛рдиреЗ рдХреЗ рд╕рд╛рде рдПрдХ рдореИрдк рд╣реИ рдФрд░ рдлреЙрд░реНрдо
id
world-110m-country-names.tsv
рдирд╛рдо рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓
world-110m-country-names.tsv
рдирд╛рдоред рджреЗрд╢ рдХрд╛ рдирд╛рдоред рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдмрд╛рд╣рд░реА рдлрд╝рд╛рдЗрд▓ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд┐рд╕реА рднреА рднрд╛рд╖рд╛ рдореЗрдВ рдирд╛рдореЛрдВ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдм рдХреБрдЫ, рдЖрдк рджреБрдирд┐рдпрд╛ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдЯрд┐рдкреНрдкрдгреА:рд╣рдорд╛рд░реА рдкрд╕рдВрдж рдХреЗ рдкреИрдорд╛рдиреЗ рдкрд░, рдХреБрдЫ рдЫреЛрдЯреЗ рджреЗрд╢ рдЬреНрдпрд╛рдорд┐рддреАрдп рдЕрд░реНрдереЛрдВ рдореЗрдВ "рдкрддрд┐рдд" рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реА рд╕реВрдЪреА рдореЗрдВ рдХреЗрд╡рд▓ 174 рджреЗрд╢ рд╣реИрдВред
рдПрдХ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдЧреНрд▓реЛрдм рдбреНрд░рд╛ рдХрд░реЗрдВ
рд╣рдорд╛рд░рд╛ рд▓рдХреНрд╖реНрдп рдПрдХ рдЧреНрд▓реЛрдм рд╣реЛрдЧрд╛ рдЬреЛ рдпрд╣ рдХрд░ рд╕рдХрддрд╛ рд╣реИ:
- рднреВрдорд┐ рдХреЗ рд▓рд┐рдП рдорд╛рдЙрд╕ "рд╣рдерд┐рдпрд╛рдиреЗ" рдХреЛ рдШреБрдорд╛рдПрдВ
- рд╕реВрдЪреА рд╕реЗ рдЪрдпрдирд┐рдд рджреЗрд╢ рдкрд░ рдЧреНрд▓реЛрдм рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВ
рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдЬрд┐рдиреНрд╣реЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Nice title</title> <script src="http://d3js.org/d3.v3.min.js"></script> <script src="http://d3js.org/queue.v1.min.js"></script> <script src="http://d3js.org/topojson.v1.min.js"></script> </head> <style> Your awesome CSS </style> <body> <h1>Cool Header</h1> <script> Your awesome d3.js code </script> </body> </html>
рдореБрдЦреНрдп рдЪрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ рдФрд░
DOM рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝реЗрдВред
var width = 600, height = 500, sens = 0.25, focused;
sens
рдЪрд░ рдорд╛рдЙрд╕ рдХреЗ рд╕рд╛рде рд░реЛрдЯреЗрд╢рди рдХреА рд╕рдЯреАрдХрддрд╛ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдФрд░
focused
рдЙрдкрдпреЛрдЧ рдЪрдпрдирд┐рдд (рдХреЗрдВрджреНрд░рд┐рдд) рджреЗрд╢ рдХреЗ рд▓рд┐рдП рдЯреНрд░рд┐рдЧрд░ рдХреЗ рд░реВрдк
focused
рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдкреНрд░рдХреНрд╖реЗрдкрдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ:
рдСрд░реНрдереЛрдЧреНрд░рд╛рдлрд╝рд┐рдХ рдкреНрд░рдХреНрд╖реЗрдкрдг ред
TheclipAngle () рд╡рд┐рдзрд┐ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рд╣рдо рдЧреЛрд▓реЗ рдХреЗ рдХрд┐рд╕ рднрд╛рдЧ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВрдЧреЗ (рдпрд╛ рдмрд▓реНрдХрд┐ рджреЗрдЦреЗрдВрдЧреЗ), рдЖрдк рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдкрд░ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ:
рдЫреЛрдЯреЗ рд╡реГрддреНрдд рдХреА рдХрддрд░рди ред рдмрд╛рдХреА рдХреЛ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдо
рдХреНрдпреВ.рдЬреЗрдПрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреА рдлрд╛рдЗрд▓реЗрдВ рдЕрдкрд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╣рдореЗрдВ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд░реВрдк рд╕реЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
queue() .defer(d3.json, "data/world-110m.json") .defer(d3.tsv, "data/world-110m-country-names.tsv") .await(ready);
рдЕрдм рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрд╕реЗ
ready
рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдЕрдкрдиреА
рдбреНрд░реЙрдкрдбрд╛рдЙрди рд╕реВрдЪреА рдореЗрдВ рджреЗрд╢ рдХреЗ рдирд╛рдо рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рд╡рд┐рд╢реНрд╡ рдХреЗ рджреЗрд╢реЛрдВ рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
function ready(error, world, countryData) { var countryById = {}, countries = topojson.feature(world, world.objects.countries).features;
рдЖрдЗрдП рдорд╛рдЙрд╕ рдЗрд╡реЗрдВрдЯ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ
drag.origin () рдореЗрдВ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╣ рд╣рдореЗрдВ рдПрдХ рддрддреНрд╡ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░рддреЗ рд╕рдордп, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдЕрдХреНрд╖рд╛рдВрд╢ рдФрд░ рджреЗрд╢рд╛рдВрддрд░ рдореЗрдВ "рдореВрд▓" (рд╡рд╛рд╕реНрддрд╡рд┐рдХ) рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рджреЗрд╢ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рд╕рдорд╛рд░реЛрд╣ рд▓рд┐рдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдЬреЛ рд╣рдореЗрдВ рджреЗрд╢ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ
id
рдХреЗ рдирд╛рдо рд╕реЗ рдЬрд┐рдпреЛрдбрд╛рдЯрд╛ рд▓реМрдЯрд╛рдПред рдЕрд╕рд▓ рдореЗрдВ, рдпрд╣рд╛рдБ рд╡рд╣ рд╣реИред
function country(cnt, sel) { for(var i = 0, l = cnt.length; i < l; i++) { if(cnt[i].id == sel.value) {return cnt[i];} } };
рдЕрдм рдЖрдк рд╕реАрдзреЗ рд╕реВрдЪреА рд╕реЗ рдЪреБрдиреЗ рдЧрдП рджреЗрд╢ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ (рдХреЗрдВрджреНрд░рд┐рдд) рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣рд╛рдВ, рд╕рднреА рдирдордХ рдЯреНрд░рд╛рдВрд╕реНрдЬрд╝рд┐рдЯ рдореЗрдВ рд╣реИрдВред
рдЯреНрд╡рд┐рди () , рдЬреЛ рд╣рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдореВрд▓реНрдп рдХреЗ рд▓рд┐рдП рджрд┐рдП рдЧрдП рдлрд╝рдВрдХреНрд╢рди (рд░реЛрдЯреЗрд╢рди) рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдХрддрд╛рдИ, рдиреАрд▓реА рдЧреЗрдВрдж рдХреЛ рдХрддрд╛рдИред
рдпрд╣ рдмрд╛рдд рд╣реИ -
рдПрд╕рд╡реАрдЬреА рдЧреНрд▓реЛрдм рддреИрдпрд╛рд░ рд╣реИред
GitHub рдкрд░ рд╕реНрд░реЛрдд рдкрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ (рд╡рд╣рд╛рдВ рдЖрдк рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдкреНрд░рд╢реНрди рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ
рдХреЗрд╡рд▓- рд╣реИрдмреНрд░рд╣рд╛рдмреНрд░ рдкрд░
рдкрдврд╝рд╛ рд╣реИ ), рдФрд░ рдЖрдк
bl.ocks.org рд╕реЗрд╡рд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░рд┐рдгрд╛рдо рдорд╣рд╕реВрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдЗрдП рджреЗрдЦреЗрдВ
рдПрд╕рд╡реАрдЬреА рдХреЗ рдлрд╛рдпрджреЗ:
- рдбреЛрдо рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛, рд╡рд┐рд╢реЗрд╖
path
- рд╕реАрдПрд╕рдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ (рдкрд┐рдЫрд▓реЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк)
- рдкрд╛рда рдкрд╛рда рд╣реИ, рд╕рднреА рдЖрдЧрд╛рдореА рд▓рд╛рдн рдХреЗ рд╕рд╛рде
рдкреГрдереНрд╡реА рдЧреНрд░рд╣ рдПрдиреАрдореЗрд╢рди
рдПрд╕рд╡реАрдЬреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдпрд╣ рд╕реБрд▓рдЭрд╛ рд╣реБрдЖ рд▓рдЧрддрд╛ рд╣реИ, рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдХреИрдирд╡рд╛рд╕ рдкрд░ рдРрд╕рд╛ рдХреБрдЫ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдкреГрдереНрд╡реА рдХреЗ рдШреВрд░реНрдгрди рдХрд╛ рдПрдХ рд╕рд░рд▓ рдПрдиреАрдореЗрд╢рди рдмрдирд╛рдПрдВред рдпрд╣рд╛рдВ рдмрд╣реБрдд рдХреБрдЫ рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рдорд╛рди рд╣реЛрдЧрд╛ред рдХреЛрдб рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рд▓рд╛рдКрдВрдЧрд╛ред
var width = 800, height = 500; var projection = d3.geo.orthographic() .scale(245) .rotate([180, 0]) .translate([width / 2, height / 2]) .clipAngle(90); var canvas = d3.select("body").append("canvas") .attr("width", width) .attr("height", height); var c = canvas.node().getContext("2d"); var path = d3.geo.path() .projection(projection) .context(c); function getImage(path, callback) { var img = new Image(); img.src = path; img.onload = callback(null, img); } queue() .defer(d3.json, "data/world-110m.json") .defer(d3.tsv, "data/world-110m-country-names.tsv") .defer(getImage, "data/space.jpg") .await(ready);
рд░реЛрдЯреЗрд╢рди рдХреЛ рдмрд┐рдВрджреБ
[180, 0]
рд╕реЗ рдмрд┐рдВрджреБ
[-180, 0]
рддрдХ рдШреБрдорд╛рд╡ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕рдВрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, "рдЗрдВрдЯрд░рдкреЛрд▓рд░", рдХреИрдЪ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛, рд╡рд╣ рдХрд░реЗрдЧрд╛ рдЬреЛ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдПред рдлрд┐рд░ рд╣рдо рдХреИрдирд╡рд╛рд╕ рдкрд░ рдкреЗрдВрдЯрд┐рдВрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдкрд╣рд▓реЗ рдЗрд╕реЗ рд╕рд╛рдл рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рджреЗрд╢реЛрдВ рдХреА рдкреГрд╖реНрдарднреВрдорд┐, рдХреНрд╖реЗрддреНрд░, рдорд╣рд╛рджреНрд╡реАрдк рдФрд░ рд╕реАрдорд╛рдПрдВ рдЦреАрдВрдЪрддреЗ рд╣реИрдВред
transition
рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХреЙрд▓ рдХреЗ рдХрд╛рд░рдг рд╣рдореЗрдВ рдЕрдирдВрдд рд░реЛрдЯреЗрд╢рди рдорд┐рд▓рддрд╛ рд╣реИред
"рдФрд░ рдлрд┐рд░ рднреА рд╡рд╣ рдШреВрдорддреА рд╣реИ!"
рдЦреИрд░, рд╣рдордиреЗ рдПрдиреАрдореЗрд╢рди рдмрдирд╛рдпрд╛ред
GitHub рдкрд░ рд╕реНрд░реЛрдд рдкрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдк
bl.ocks.org рд╕реЗрд╡рд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдВрддрд░рд┐рдХреНрд╖ рджреГрд╢реНрдпреЛрдВ рдХрд╛ рдЖрдирдВрдж рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред
рдХреИрдирд╡рд╛рд╕ рдХреЗ рд▓рд╛рднреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
- рдПрд╕рд╡реАрдЬреА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬрд╝ / рдЪрд┐рдХрдирд╛ рдкреНрд░рджрд░реНрд╢рди
- рдПрдиреАрдореЗрд╢рди, рд╡реАрдбрд┐рдпреЛ, рдЧреЗрдо рдФрд░ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛ рдЖрдЬ рдЗрд╕рдХреА рдорджрдж рд╕реЗ рд▓рд╛рдЧреВ рдХреА рдЧрдИ рд╣реИ
рдирд┐рд╖реНрдХрд░реНрд╖
рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдЕрджреНрднреБрдд
d3.js рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдП рдЧрдП рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рджреЗрдЦрд╛ред рдореИрдВрдиреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рдЖрд╕рд╛рди, рджреГрд╢реНрдп рдФрд░ рдХрд╛рдлреА рд░реЛрдЪрдХ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред
рдПрд╕рд╡реАрдЬреА рдФрд░ рдХреИрдирд╡рд╕ рдХреЗ рдмреАрдЪ рд▓рдбрд╝рд╛рдИ рдореЗрдВ, рджреЛрд╕реНрддреА рдЕрдВрддрддрдГ рдЬреАрдд рдЧрдИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдкреНрд░рдХрд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛рд░реНрдЯреЛрдЧреНрд░рд╛рдлреА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рддреЛ
рдПрд╕рд╡реАрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреА рдЬрд╛рддреА рд╣реИ, рдпрджрд┐ рдЖрдк рдорд▓реНрдЯреАрдореАрдбрд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреИрдирд╡рд╛рд╕ рдЖрдкрдХреА рдорджрдж рдХрд░реЗрдЧрд╛ред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рд░реБрдЪрд┐ рд░рдЦрддреЗ рдереЗред
D3.js рдХреЗ рдЖрдЧреЗ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдЕрдЪреНрдЫреА рдХрд┐рд╕реНрдордд рдФрд░ рд╕рдлрд▓рддрд╛!