Π Π°Π·Π½ΠΎΠ΅

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° d3 js: ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΎ D3.js / Π₯Π°Π±Ρ€

03.06.2022

Быстро ΠΎ Π³Π»Π°Π²Π½ΠΎΠΌ: визуализация с D3.js | by Jenny V | NOP::Nuances of Programming

D3, сокращСнно ΠΎΡ‚ Data-Driven Documents, β€” это Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° JavaScript, которая позволяСт ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ самыми Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ способами ΠΈ содСйствуСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ элСмСнтами DOM.

D3 Π½Π΅ относится ΠΊ разряду Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ для построСния Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² ΠΈ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌ. Она ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ большСй Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒΡŽ ΠΈ усилСна возмоТностями Recharts, C3js ΠΈ Raw graphs. Π•Π΅ прСимущСство ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ: Ρ‚Π°ΠΌ, Π³Π΄Π΅ обычная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Ρ‚Π΅Ρ€ΠΏΠΈΡ‚ фиаско, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ слишком ΡƒΠ²Π»Π΅ΠΊΠ°Π΅Ρ‚Π΅ΡΡŒ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ настройками, D3 ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ

Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ познакомимся с D3 Π½Π° основС ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ². ΠžΠ±Ρ‰ΠΈΠΉ процСсс сводится ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ этапам: Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… β€” Π²Ρ‹Π±ΠΎΡ€ΠΊΠ° элСмСнтов β€” привязка Π΄Π°Π½Π½Ρ‹Ρ… β€” созданиС/ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅/ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнтов.

Но ΠΏΡ€Π΅ΠΆΠ΄Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ порисуСм Π½Π° Π²Π΅Π±-страницС ΠΈ попрактикуСмся Π² ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ сСлСкторов ΠΈ Ρ„ΠΈΠ³ΡƒΡ€ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ†Π²Π΅Ρ‚ΠΎΠ².

РисованиС Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Ρ„ΠΈΠ³ΡƒΡ€

Как ΠΆΠ΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ с D3? ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго создаСм HTML-страницу, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ пустой элСмСнт SVG (Π°Π±Π±Ρ€Π΅Π²ΠΈΠ°Ρ‚ΡƒΡ€Π° Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ΡΡ ΠΊΠ°ΠΊ язык Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ). Для Ρ‚Π΅Ρ… ΠΊΡ‚ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ‚, SVG β€” это ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, состоящСС ΠΈΠ· основных гСомСтричСских Ρ„ΠΈΠ³ΡƒΡ€, благодаря Ρ‡Π΅ΠΌΡƒ ΠΎΠ½ΠΎ становится Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ. Как Ρ€Π°Π· для рисования Ρ‚Π°ΠΊΠΈΡ… Ρ„ΠΈΠ³ΡƒΡ€ ΠΈ понадобится D3.

Π‘Π½Π°Ρ‡Π°Π»Π° для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° D3 создаСм HTML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° протяТСнии всСй ΡΡ‚Π°Ρ‚ΡŒΠΈ. Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ΄ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ Ρ‚Π΅Π³Π°ΠΌΠΈ скрипта.

Π’ строкС 4 ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ D3. Если Ρƒ вас frontend-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ с Node.js, Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ NPM. Π’ строкС 7 опрСдСляСм элСмСнт SVG, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅ΠΌ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹.

НапишСм ΠΏΠ΅Ρ€Π²Ρ‹Π΅ строки ΠΊΠΎΠ΄Π° D3:

Π’ строкС 2 задСйствуСм ΠΌΠ΅Ρ‚ΠΎΠ΄ d3.select(). Он Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт с CSS-сСлСктором, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π»ΠΈ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π’ рассматриваСмом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½Π° страницС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ‚Π΅Π³ <svg>, поэтому ΠΎΠ½ Π²Π΅Ρ€Π½Π΅Ρ‚ СдинствСнно ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉΡΡ элСмСнт SVG.

ПозТС обратимся ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ d3.selectAll(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Π΅Ρ€Π½Π΅Ρ‚ Π½Π΅ ΠΎΠ΄ΠΈΠ½, Π° всС элСмСнты, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ CSS-сСлСктору.

Π’ строкС 4 ΠΊ элСмСнту SVG добавляСм β€œcircle” (ΠΊΡ€ΡƒΠ³). Помимо Π½Π΅Π³ΠΎ Π² нашСм распоряТСнии Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ мноТСство Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„ΠΈΠ³ΡƒΡ€. Π’ строкС 5 примСняСм Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² D3, Ρ‡Ρ‚ΠΎ позволяСт ΠΏΠΎΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ нСсколько Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ избавляСт ΠΎΡ‚ нСобходимости ΠΏΠΈΡΠ°Ρ‚ΡŒ svg.function(...) Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ строкС.

Π’ строках 5, 6, 7 ΠΈ 8 устанавливаСм Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ d3.attr, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ для Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹. cx ΠΈ cy β€” ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ x ΠΈ y Ρ†Π΅Π½Ρ‚Ρ€Π° ΠΊΡ€ΡƒΠ³Π°; r β€” радиус; fill β€” Ρ†Π²Π΅Ρ‚ Π·Π°Π»ΠΈΠ²ΠΊΠΈ. Π­Ρ‚ΠΎ фиксированныС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹. Π‘ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΈΡ… использования для основных гСомСтричСских Ρ„ΠΎΡ€ΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ Π½Π° freeCopeCamp.

Π˜Ρ‚Π°ΠΊ, Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

ΠšΡ‚ΠΎ-Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ здСсь Π½Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ особСнного. Однако позволю сСбС Π½Π΅ ΡΠΎΠ³Π»Π°ΡΠΈΡ‚ΡŒΡΡ. Π”Π°ΠΆΠ΅ самыС слоТныС графичСскиС изобраТСния ΡΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… простых Ρ„ΠΈΠ³ΡƒΡ€.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠΌ:

ДобавляСм Ρ„ΠΈΠ³ΡƒΡ€Ρƒ rect ΠΈ устанавливаСм Π½ΡƒΠΆΠ½Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ для Π΅Π΅ отобраТСния. Π—Π°Ρ‚Π΅ΠΌ выполняСм ΠΊΠΎΠ΄ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

Π‘ основными ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌΠΈ добавлСния Ρ„ΠΈΠ³ΡƒΡ€ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ вопросу Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ графичСским изобраТСниям Π½Π° ΠΈΡ… основС.

Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…

Для получСния Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… Π² D3 сущСствуСт мноТСство Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. НачнСм с самых интСрСсных: d3.json('...'), d3.csv('...') ΠΈ d3.xml('...').

Для Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Ρ†Π΅Π»ΠΈ всС ΠΈΠ· Π½ΠΈΡ… ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Fetch. CSV, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ JSON ΠΈ XML, Π½Π΅ допускаСт Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

Π’ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ„Π°ΠΉΠ»ΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ… (socialnetwork.json) ΠΈΠ· Π²Ρ‹ΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΠΉ ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ сСти ΠΈ стилями, прСдставлСнными Π½ΠΈΠΆΠ΅:

Π‘Π½Π°Ρ‡Π°Π»Π° построим гистограмму для Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. По Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΠΌ Π³ΠΎΠ΄Ρ‹ (years), Π° ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ β€” количСство ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² (comments). Для этой Ρ†Π΅Π»ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ соотвСтствСнно d3.axisBottom() ΠΈ d3.axisLeft(). Π’ ΠΊΠΎΠ΄Π΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ рисованиС осСй происходят ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Как ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°! Π‘Π΅Π· ΠΏΠ°Π½ΠΈΠΊΠΈ, рассмотрим ΠΊΠ°ΠΆΠ΄ΡƒΡŽ строку ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Π’ строкС 3 ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ JSON. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ d3.json() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ промис, Π½Π°ΠΌ Π½Π΅ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ Π±Π΅Π· .then() ΠΈΠ»ΠΈ await, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠΆΠ΄Π°Ρ‚ΡŒΡΡ окончания ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ это происходит, Π² строках 5 ΠΈ 10 приступаСм ΠΊ созданию Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ³Ρ€Π°ΡŽΡ‚ Π²Π°ΠΆΠ½ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ Π² отрисовкС Π΄Π°Π½Π½Ρ‹Ρ…. Допустим, ΠΌΡ‹ рассматриваСм Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΠΊ с 2015 ΠΏΠΎ 2020 Π³ΠΎΠ΄ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ 500 Ρ… 500 пиксСлСй. ΠŸΡ€ΠΈ отрисовкС Π½ΠΎΠΌΠ΅Ρ€Π° Π³ΠΎΠ΄Π° Π½Π° оси x Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ 2015–2020 Π² 0–500.

Π‘Π°ΠΌΠΎΠ΅ врСмя для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ. Одна ΠΈΠ· Π½ΠΈΡ…, .scaleLinear(), Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΎΠ΄ΠΈΠ½ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ чисСл (domain) Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ (range). Π’ строкС 7 ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ (range)[100,800], ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ отрисовку с 100-Π³ΠΎ пиксСля ΠΏΠΎ оси x, Π° Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒ Π½Π° 800-ΠΌ.

ПослС этого происходит ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ (domain), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ. .domain() ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ массив с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ значСниями. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Ρƒ D3 Π΅ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ d3.extent(), d3.max() ΠΈ d3.min(). Π’ строкС 8 устанавливаСм минимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ minimum of years β€” 1 ΠΈ максимальноС maximum of years + 1. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π² дальнСйшСм ΠΎΡ‚Ρ†Π΅Π½Ρ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ столбцы гистограммы.

Π’ строкС 13 Π΄Π΅Π»Π°Π΅ΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ось Π΄ΠΎΠ»ΠΆΠ½Π° Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ с 0, Π° Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ числом ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π². Наша Π·Π°Π΄Π°Ρ‡Π° β€” ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΎΡ‚ 0 Π΄ΠΎ 150, Π° Π½Π΅ ΠΎΡ‚ 50 Π΄ΠΎ 150.

d3.extent() Π²Π΅Ρ€Π½Π΅Ρ‚ массив ΠΈΠ· максимального ΠΈ минимального Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ [max, min], избавляя ΠΎΡ‚ нСобходимости Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

ΠŸΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Π΅ΠΌ ΠΊ Ρ€ΠΈΡΠΎΠ²Π°Π½ΠΈΡŽ оси: Π² строкС 15 добавляСм ось x. Π’ цСлях стилизации присваиваСм Π΅ΠΉ класс ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅ΠΌ элСмСнт g, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ось x всСгда рисуСтся ΠΈΠ· Π½Π°Ρ‡Π°Π»Π° ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚, располоТСнного Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ Π»Π΅Π²ΠΎΠΌ ΡƒΠ³Π»Ρƒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ сдвигаСм g Π½Π° Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒ, послС Ρ‡Π΅Π³ΠΎ выполняСм .call(d3.axisBottom(x).tickFormat(d3. format("d")). Ѐункция .axisBottom рисуСт ось. (ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π»ΠΈ Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ range, поэтому ΠΎΠ½Π° Π·Π½Π°Π΅Ρ‚, Π² ΠΊΠ°ΠΊΠΎΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ range/domain Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ). Π—Π°Ρ‚Π΅ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ функция .tickFormat() сообщаСт D3, ΠΊΠ°ΠΊ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ дСлСния Π½Π° оси. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ "d" для обозначСния простых чисСл Π² ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π΅ ΠΎΡ‚ 2014 Π΄ΠΎ 2021.

Π”Π°Π»Π΅Π΅ практичСски Ρ‚ΠΎ ΠΆΠ΅ самоС ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ для отрисовки оси y, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ мСняСм Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ transform, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ эту ось Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎ для отобраТСния Π΄Π΅Π»Π΅Π½ΠΈΠΉ.

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

Π’Ρ‹Π±ΠΎΡ€ΠΊΠ° элСмСнтов ΠΈ привязка Π΄Π°Π½Π½Ρ‹Ρ…

На этом этапС Π½ΡƒΠΆΠ½ΠΎ Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π³ΠΎΠ΄Π° Π² зависимости ΠΎΡ‚ числа ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π². Π‘ этой Ρ†Π΅Π»ΡŒΡŽ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅ΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ SVG ΠΈ привязку Π΄Π°Π½Π½Ρ‹Ρ…. ПишСм ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

Π‘Π½Π°Ρ‡Π°Π»Π° Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ d3.select() для получСния SVG. (ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ… ΠΊΠΎΠ΄Π° ΠΌΡ‹ Π΅Π΅ сохранили Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ svg). Π—Π°Ρ‚Π΅ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сСлСктора CSS selector .barchartrectangle ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠΌ поиск ΠΈ ΠΎΡ‚Π±ΠΈΡ€Π°Π΅ΠΌ всС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΈ гистограммы. Π­Ρ‚ΠΎ связано с процСссами обновлСния: Ссли массив измСнится, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ΡΡ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΈ для ΠΈΡ… ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²ΠΊΠΈ Π»ΠΈΠ±ΠΎ удалСния.

Π”Π°Π»Π΅Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ .data(), которая содСрТит ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ data, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ. ΠŸΡ€ΠΈ этом Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ являСтся Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ опрСдСляСт ΠΊΠ»ΡŽΡ‡. Для этого ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π΅ΠΌΡƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΡƒΡŽ элСмСнт (item) ΠΈ индСкс (index). Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ возвращаСтся индСкс.

Однако, ΠΊΠ°ΠΊ ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ поля элСмСнта для выявлСния Ρ‚Π΅Ρ… элСмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°Ρ‚ измСнСнию/ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡŽ/вставкС. ΠŸΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ свойства id Π² датасСтС ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ (item, index)=> item.id.

Π˜Ρ‚Π°ΠΊ, ΠΏΡ€ΠΈΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΡ‹ Π½Π°ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ добавлСнию ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΎΠ².

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнтов

Когда происходит ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² массивС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡƒΡ‚Π΅ΠΌ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ), D3 сравниваСт массивы ΠΈ Ρ€Π΅ΡˆΠ°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ.

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ рассмотрим Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 2 Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ .enter() ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ .exit().

ΠŸΠΎΠ½ΡΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

Рассмотрим использованиС этого массива Π² качСствС Π΄Π°Π½Π½Ρ‹Ρ… [1,2,3] ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠ΄Π°.

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ .barchartrectangle Π²Π΅Ρ€Π½Π΅Ρ‚ 0 элСмСнтов, поэтому D3 Π² курсС, Ρ‡Ρ‚ΠΎ элСмСнты Π² массивС ΡΠ²Π»ΡΡŽΡ‚ΡΡ трСмя Π½ΠΎΠ²Ρ‹ΠΌΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΎΠ½Π° задСйствуСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Π΅ Π½Π° ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ .enter(). Π’ Π½Π΅ΠΉ ΠΌΡ‹ присоСдиняСм Π½ΠΎΠ²Ρ‹Π΅ rect ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ Π½ΠΎΠ²ΠΎΠΌΡƒ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ присваиваСм ΠΈΠΌ класс barchartrectangle. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ β€œΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΉβ€ Π½Π΅Ρ‚, инструкция .exit() Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½Π°.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ массива Π½Π° [1,2] ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° сСлСктор .barchartrectangle Π²Π΅Ρ€Π½Π΅Ρ‚ Ρ‚Ρ€ΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… элСмСнта. Однако D3 ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π² массивС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²ΡƒΡ…. Π’ΠΎΠ³Π΄Π° ΠΎΠ½Π° Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функциями, связанными с инструкциСй .exit(), ΠΈ Π² этом случаС ΡƒΠ΄Π°Π»ΠΈΡ‚ . remove() Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΠΈΠ· Π½ΠΈΡ….

Как D3 ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚, ΠΊΠ°ΠΊΠΎΠΉ элСмСнт слСдуСт ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ? Π­Ρ‚ΠΎ зависит ΠΎΡ‚ ΠΊΠ»ΡŽΡ‡Π° Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π½Π΅Π΅. Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΠΌ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ являСтся индСкс, поэтому ΠΎΠ½ ΡƒΠ΄Π°Π»ΠΈΡ‚ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ элСмСнт. Но Ссли элСмСнт оказался фактичСским id (item, index)=> item, ΠΈ ΠΌΡ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ массив Π½Π° [1,3], Ρ‚ΠΎ вмСсто Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½ Π²Ρ‚ΠΎΡ€ΠΎΠΉ barchartrectangle.

Π Π°Π±ΠΎΡ‚Π° инструкций .enter() ΠΈ .exit() Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ понятна, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ гистограммы.

Π’ строкС 4 примСняСм .enter() ΠΈ Ρ‚Π΅ΠΌ самым инструктируСм D3, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Π’ строкС 5 добавляСм Π½ΠΎΠ²Ρ‹ΠΉ rect ΠΈ устанавливаСм Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹. Как Π²ΠΈΠ΄Π½ΠΎ Π² строках 6 ΠΈ 7, функция .attr() ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ фиксированныС значСния, Π½ΠΎ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ элСмСнт ΠΈ Π΅Π³ΠΎ индСкс, Ρ‡Ρ‚ΠΎ позволяСт ΠΎΡ‚Ρ€ΠΈΡΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ элСмСнты Π² зависимости ΠΎΡ‚ Π΄Π°Π½Π½Ρ‹Ρ….

Π‘Π½Π°Ρ‡Π°Π»Π° Π² строкС 6 ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ x ΠΏΡƒΡ‚Π΅ΠΌ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ x, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Ρ€Π°Π½Π΅Π΅ с Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ Π³ΠΎΠ΄Π°. Π’ ΠΎΡ‚Π²Π΅Ρ‚ вСрнСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ пиксСля, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ гистограмму. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π΄Π°Π»Π΅Π΅ ΡˆΠΈΡ€ΠΈΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ установлСна ΠΊΠ°ΠΊ 100, Ρ‚ΠΎ ΠΌΡ‹ подстраиваСм столбСц ΠΊ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ этого значСния, выполняя -50. Для ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ y просто Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ. Π’ строкС 9 для опрСдСлСния высоты выполняСм 800- y(item.comments) ΠΈΠ·-Π·Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ. Напомню, Ρ‡Ρ‚ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π±Ρ‹Π» ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΊΠ°ΠΊ [800, 100], поэтому ΠΌΠ°Π»Ρ‹Π΅ значСния ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π² большиС значСния пиксСлСй. Π’ связи с этим ΠΌΡ‹ ΠΎΠ±Ρ€Π°Ρ‰Π°Π΅ΠΌ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, выполняя 800 β€” y(item.comments).

НаконСц, для ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π·Π°Π΄Π°Π΅ΠΌ синий Ρ†Π²Π΅Ρ‚ Π·Π°Π»ΠΈΠ²ΠΊΠΈ. Π˜Ρ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎ! На основС Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΡ‹ отрисовали Π½Π° экранС гистограмму. Π’ этом ΠΈ состоит вся ΡΡƒΡ‚ΡŒ D3. Но Ρƒ Π½Π΅Π΅ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ большС возмоТностСй. На D3.js β€” Data-Driven Documents (d3js.org) Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с интСрСсными Π³Ρ€Π°Ρ„ΠΈΠΊΠ°ΠΌΠΈ ΠΈ Ρ„ΠΈΠ³ΡƒΡ€Π°ΠΌΠΈ.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΎΠ±Ρ‰Π΅Π΅ прСдставлСниС ΠΎ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ посрСдством Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ D3. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ Π² SVG Π½Π° основС динамичСски Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

А Π²ΠΏΠ΅Ρ€Π΅Π΄ΠΈ Π΅Ρ‰Π΅ ΠΌΠ½ΠΎΠ³ΠΎ интСрСсного: Π³Π΅ΠΎΠΊΠ°Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ HTML, визуализация сСтСвых процСссов ΠΈ Ρ‚.Π΄. D3 Ρ†Π΅Π½Π½Π° ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ прСдоставляСт ΠΏΠΎΡ‡Ρ‚ΠΈ Π±Π΅Π·Π³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹Π΅ возмоТности, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π²Ρ‹ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ.

Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅:

  • notebookJS: JavaScript ΠΈ D3 Π² Jupyter Notebook
  • ΠŸΠΎΡ‡Π΅ΠΌΡƒ я большС Π½Π΅ ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡΡŒ D3.js
  • ВОП-25 Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ React 2021–2022: Π½ΠΎΠ²Ρ‹Π΅, ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅, Π½ΠΎ малоизвСстныС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ JavaScript

Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ нас Π² Telegram, VK ΠΈ ЯндСкс.Π”Π·Π΅Π½

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…: D3.js | DataReview.info

БСгодня ΠΌΡ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΠΌ ΡΠ΅Ρ€ΠΈΡŽ статСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ расскаТут ΠΎ самых соврСмСнных срСдствах Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΠ΅Ρ€Π²Π°Ρ Π½Π° ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ – Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° D3.js, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ эффСктивный ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² любоС Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ расскаТСм ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°Ρ… Π΅Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹, обсудим Π³Π»Π°Π²Π½Ρ‹Π΅ особСнности, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ этот инструмСнт срСди Π΅ΠΌΡƒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ….

D3.js и концСпция Data-Driven Documents

D3.js (ΠΈΠ»ΠΈ просто D3 – Dataβ€”DrivenDocuments) – это Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° JavaScript, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π°Ρ Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ для создания ΠΈ контроля динамичСских ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… графичСских элСмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π² Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. ΠšΡ€ΠΎΠΌΠ΅ всСго ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ, D3 ΠΊΠ°ΠΊ инструмСнт Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, прСдусмотрСнныС стандартом W3C – SVG (ScalableVectorGraphics – ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠ°Ρ вСкторная Π³Ρ€Π°Ρ„ΠΈΠΊΠ°), JavaScript, HTML5 ΠΈ CSS3.

ЕстСствСнно, D3 – Π½Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ Π²Π΅Π±-Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΈΠΊΠΈ D3.js, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, IEEE ΠΈ Flare, Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π»ΠΈ Β«Π±Π΅ΡΡˆΠΎΠ²Π½ΡƒΡŽΒ» Ρ€Π°Π±ΠΎΡ‚Ρƒ всСх ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΎΠ΄Π½Π°ΠΊΠΎ Π² ΡƒΠ³ΠΎΠ΄Ρƒ инкапсуляции ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ классы Π±Ρ‹Π»ΠΈ скрыты ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ программиста Π² Ρ‚ΠΎΠΌ числС. Π’ этом смыслС D3 являСтся ΠΈΠ½Π½ΠΎΠ²Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ стандартная DOM-модСль (DocumentObjectModel, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°). Π›ΡŽΠ±ΠΎΠΉ элСмСнт (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, HTML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΈΠ»ΠΈ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅) извСстной структуры, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСн Π² Π²ΠΈΠ΄Π΅ Π΄Π΅Ρ€Π΅Π²Π° ΡƒΠ·Π»ΠΎΠ², ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… прСдставляСт собой ΠΎΠ±Ρ€Π°Π·Π΅Ρ† Π΄Π°Π½Π½Ρ‹Ρ… – тСкстовый, графичСский ΠΈΠ»ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Π£Π·Π»Ρ‹ связаны ΠΌΠ΅ΠΆΠ΄Ρƒ собой ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ΠΌ Β«Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ-ΠΏΠΎΡ‚ΠΎΠΌΠΎΠΊΒ», Ρ‡Ρ‚ΠΎ позволяСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ ΠΈ скриптам ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ доступ ΠΊ Π²Π΅Π±-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌ, ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΡ… структуру ΠΈ содСрТимоС, Π° Ρ‚Π°ΠΊΠΆΠ΅, СстСствСнно, ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅.

Β 

Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ интСрфСйс DOM являСтся ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π΅ зависит Π½ΠΈ ΠΎΡ‚ языка, Π½ΠΈ ΠΎΡ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. Надо Π»ΠΈ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ использованиС этой ΠΌΠΎΠ΄Π΅Π»ΠΈ – нСсомнСнный ΠΊΠΎΠ·Ρ‹Ρ€ΡŒ Π² Ρ€ΡƒΠΊΠ°Π²Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² D3.js? Для нашСй с Π²Π°ΠΌΠΈ спСцифики – Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… – особСнно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. D3, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, Π΄Π°Π΅Ρ‚ Ρ‚Π°ΠΊΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Как ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ сказано, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° D3.js ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ любой HTML-страницС с использованиСм JavaScript. D3 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ стандартныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ языка для выдСлСния элСмСнтов, создания SVG-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ стилСй, Π° Ρ‚Π°ΠΊΠΆΠ΅ динамичСских эффСктов. Π§Ρ‚ΠΎ особСнно Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ, Π΄Π°ΠΆΠ΅ ΠΎΡ‡Π΅Π½ΡŒ большиС Π½Π°Π±ΠΎΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Ρ‹ Π² SVG-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ простых Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ прСдставлСны Π² Π²ΠΈΠ΄Π΅ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌ ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†, ΠΊΠ°ΠΊ графичСских, Ρ‚Π°ΠΊ ΠΈ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ richtext. ΠŸΡ€ΠΈ этом Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ любом Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅; СдинствСнноС условиС – всС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ прописаны Π² ΠΊΠΎΠ΄Π΅.

РазбСрСмся с основными тСхничСскими ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ структурой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ интСрфСйса. Π˜Ρ‚Π°ΠΊ, Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΎΡΠ½ΠΎΠ²ΠΎΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ D3.js:

  • Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅.Β Π¦Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ D3 – Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€Π° (выдСлСния) Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° DOM-ΡƒΠ·Π»ΠΎΠ² (Π²Ρ€ΠΎΠ΄Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ это Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Ρ‡Π΅Ρ€Π΅Π· CSS), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ прСобразования этих Π΄Π°Π½Π½Ρ‹Ρ… (ΠΊΠ°ΠΊ Ρ‡Π΅Ρ€Π΅Π· jQuery).
  • ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄.Β Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° функция Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ примСняСтся ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ для постСпСнного ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ значСния Π½Π΅ΠΊΠΎΠ΅Π³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ. ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ – Π½Π΅ΠΊΠΈΠΉ тСкст постСпСнно измСняСт свой Ρ†Π²Π΅Ρ‚ с синСго, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π° красный.
  • ΠŸΡ€ΠΈΠ²ΡΠ·ΠΊΠ°Β Π΄Π°Π½Π½Ρ‹Ρ…. Для Π±ΠΎΠ»Π΅Π΅ слоТных Π·Π°Π΄Π°Ρ‡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ²ΠΎΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ созданиС элСмСнтов. Допустим, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Π½Π΅ΠΊΠΈΠΉ Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ…, Π° Π·Π°Ρ‚Π΅ΠΌ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта создаСт SVG-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ (Ρ„ΠΎΡ€ΠΌΠ°, Ρ†Π²Π΅Ρ‚, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅) ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ (ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρ‹, события).
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡƒΠ·Π»ΠΎΠ². ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ созданы всС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° добавляСт Π½Π° страницу DOM-ΡƒΠ·Π»Ρ‹, обСспСчивая страницС ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ ΠΆΠ΅Π»Π°Π½Π½Ρ‹ΠΉ внСшний Π²ΠΈΠ΄. Π•Ρ‰Π΅ Ρ€Π°Π· ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½Π΅ΠΌ, Ρ‡Ρ‚ΠΎ для Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Β«ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΠ΅Β» прСдставлСниС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Π½ΠΎ ΠΈ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°ΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ интСрфСйса.

РСзюмС, ΠΈΠ»ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ D3?

ΠœΡ‹ ΠΏΠΎΡΡ‚Π°Ρ€Π°Π»ΠΈΡΡŒ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ, Π² Ρ‡Π΅ΠΌ состоит концСпция ΠΈ основныС ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ D3 – ΠΈ Ρ…ΠΎΡ‚ΠΈΠΌ Π΅Ρ‰Π΅ Ρ€Π°Π· Π½Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎ Π΅Π΅ Β«Ρ„ΠΈΡˆΠΊΠ°Ρ…Β»:

  • «бСсшовная» интСграция с самыми соврСмСнными тСхнологиями Π²Ρ€ΠΎΠ΄Π΅ HTML5 ΠΈ CSS3;
  • использованиС стандартной, ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ DOM, которая Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Π»ΡŽΠ±Ρ‹ΠΌ языком, Π½ΠΎ ΠΈ позволяСт ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ любой Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ (Π² частном случаС, прСдставлСниС Π½Π°Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ…) Π² ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΌ для ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅;
  • ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ – Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π΅ скрыты Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅ΠΊΠΈΡ… классов (ΠΊΠ°ΠΊ это происходило с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π΅Π΅ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΈΠΊΠ°ΠΌΠΈ), Π° ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² любом мСстС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΏΡ€ΠΈ условии обращСния ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅;
  • ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ прСдставлСниСм Π΄Π°Π½Π½Ρ‹Ρ… – ΠΊΠ°ΠΊ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… программирования, Ρ‚Π°ΠΊ ΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΡΡ‚Π°Ρ‚ΡŒΡΡ… ΠΌΡ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ рассказ ΠΎΠ± инструмСнтах Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, рассмотрим самыС соврСмСнныС ΠΈ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ, ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹, ΠΏΡ€ΠΈΠ·Π²Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠΌΠΎΡ‡ΡŒ спСциалисту ΠΏΠΎ большим Π΄Π°Π½Π½Ρ‹ΠΌ Π² слоТной, Π½ΠΎ интСрСсной Π·Π°Π΄Π°Ρ‡Π΅ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² d3.js Π² 10 основных ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² d3.js Π² 10 основных ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…

D3.js β€” это Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° JavaScript для управлСния Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π½Π° основании Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ любой Ρ‚ΠΈΠΏ визуализация Π΄Π°Π½Π½Ρ‹Ρ…. Π’ этом Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ прСдставлСны 10 ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ d3, Π²Π΅Π΄ΡƒΡ‰ΠΈΠ΅ ΠΊ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π±Π°Π·ΠΎΠ²ΠΎΠΉ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅ рассСяния. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ этот ΠΎΠ½Π»Π°ΠΉΠ½-курс β€” ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ рСсурс для Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с d3.js.


β†’ ОбъяснСниС:

  • HTML Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ΡΡ ΠΊΠ°ΠΊ Π―Π·Ρ‹ΠΊ гипСртСкстовой Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ . По сути, это язык любого Π²Π΅Π±-сайта . Π’Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Mozilla ΠΈΠ»ΠΈ Safari, Ρ‡ΠΈΡ‚Π°ΡŽΡ‚ Ρ„Π°ΠΉΠ»Ρ‹ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΈ пСрСводят ΠΈΡ… Π½Π° Π²Π΅Π±-страницу.
  • Π’ Ρ„Π°ΠΉΠ»Π΅ HTML ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ элСмСнты, ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ Π²Π΅Π±-страницу, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Ρ‚Π΅Π³Π°ΠΌΠΈ . НапримСр, Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ уровня 1 прСдставлСн Ρ‚Π΅Π³ΠΎΠΌ
    h2
    , Π°Π±Π·Π°Ρ† с p Ρ‚Π΅Π³ , ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ‚Π΅Π³ΠΎΠΌ img ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.
  • НСвозмоТно ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ d3.js Π±Π΅Π· Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Π·Π½Π°Π½ΠΈΠΉ html. На ΠΌΠΎΠΉ взгляд, это руководство ΠΎΡ‚ W3School ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΎΡ‚ΠΏΡ€Π°Π²Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ.

β†’ ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

β†’ ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅:

  • Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈ Π²ΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄ Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ». НазовитС Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ: test.html . ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π΅Π³ΠΎ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π’Ρ‹ создали свой ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ сайт!

β†’ ОбъяснСниС:

  • CSS ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Каскадная Ρ‚Π°Π±Π»ΠΈΡ†Π° стилСй . Π­Ρ‚ΠΎ позволяСт ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ стили ΠΊ элСмСнтам, созданным с использованиСм
    html
    Ρ€Π°Π½Π΅Π΅.
  • Π§Ρ‚ΠΎ касаСтся html, Ρ‚ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ d3.js Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±Π΅Π· Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Π·Π½Π°Π½ΠΈΠΉ ΠΏΠΎ css . Если это Π½ΠΎΠ²ΠΎΠ΅ для вас, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ этот ΡƒΡ‡Π΅Π±Π½ΠΈΠΊ.

β†’ ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

β†’ ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅:

  • Π”Π°ΠΉΡ‚Π΅ класс inGreen ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ· ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ² p
  • Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ класс для ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ прСдлоТСния Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΡˆΡ€ΠΈΡ„Ρ‚Π° Π½Π°
    font-size: 20px
    Π² css.

β†’ ОбъяснСниС:

  • SVG ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠœΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠ°Ρ вСкторная Π³Ρ€Π°Ρ„ΠΈΠΊΠ° . Π­Ρ‚ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ изобраТСния. По сути, это язык, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠ΄Π°.
  • Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° d3.js Π½Π° самом Π΄Π΅Π»Π΅ прСдставляСт собой Π½Π°Π±ΠΎΡ€ ΠΈΠ· svg Ρ„ΠΈΠ³ΡƒΡ€, собранных вмСстС. НапримСр, Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° рассСяния состоит ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΡ€ΡƒΠ³ΠΎΠ², ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅.
  • Π­Ρ‚ΠΎΡ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π³Π°Π»Π΅Ρ€Π΅ΠΈ Π³Ρ€Π°Ρ„ΠΎΠ² d3 дСмонстрируСт Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΡ‹, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹Π΅ Svg.

β†’ ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

← Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠΉ мСня!

 

Π­Ρ‚ΠΎ ΠΌΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅

β†’ ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅:

  • Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π² Π²Ρ‹Π·ΠΎΠ²Π΅ svg , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ ΠΎΠ½ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‚.
  • ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΠΈΠ³ΡƒΡ€Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡˆΠΏΠ°Ρ€Π³Π°Π»ΠΊΡƒ Π½ΠΈΠΆΠ΅
 

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ источника


β†’ ОбъяснСниС:

  • JavaScript β€” ΠΎΠ΄Π½Π° ΠΈΠ· Ρ‚Ρ€Π΅Ρ… основных Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ВсСмирной ΠΏΠ°ΡƒΡ‚ΠΈΠ½Ρ‹. Он обСспСчиваСт ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ
    Π½Π° Π²Π΅Π±-страницах.
  • D3.js β€” это Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° JavaScript, особСнно полСзная для Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Он позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ, Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ элСмСнты.
  • Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ d3 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π²Ρ‹Π±ΠΎΡ€Π° окруТности с Ρ†Π΅Π»ΡŒΡŽ класса ΠΈ измСнСния Π΅Π΅ ΡˆΠΈΡ€ΠΈΠ½Ρ‹ ΡˆΡ‚Ρ€ΠΈΡ…Π° .
  • Пока Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ впСчатляСт. Но ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‚ ΠΆΠ΅ процСсс, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ сотСн ΠΊΡ€ΡƒΠ³ΠΎΠ² ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡƒ рассСяния.

β†’ ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

← Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠΉ мСня!

 

Π­Ρ‚ΠΎ ΠΌΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅

 

β†’ ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅:

  • Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π½Π΅ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ ΠΊΡ€ΡƒΠ³Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ стиля opacity , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ находится Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ‚ 0 Π΄ΠΎ 1.


β†’ ОбъяснСниС:

  • Π˜Ρ‚Π°ΠΊ, Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ запускаСт ΠΊΠΎΠ΄ Html , Css ΠΈ Javascript ΠΈ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² Π²ΠΈΠ΄Π΅ Π²Π΅Π±-страницы.
  • Если Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ Ρ‚Π°ΠΊ, выдаст ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ Π² консоли .
  • ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ консоль с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΡ‹ΡˆΠΈ -> ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ элСмСнт
  • Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² консоль, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ
    console. log("sometext")
    в вашСм кодС javascript
  • Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ для людСй, ΠΏΡ€ΠΈΡˆΠ΅Π΄ΡˆΠΈΡ… ΠΈΠ· Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Но Π½Π΅ для людСй ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… областСй (Π ?). ΠžΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ ΡƒΠΌΠ΅Ρ‚ΡŒ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ свой ΠΊΠΎΠ΄.

β†’ ОбъяснСниС:

  • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ d3.js начинаСтся с создания элСмСнта svg . Π­Ρ‚ΠΎΡ‚ элСмСнт ΠΈΠΌΠ΅Π΅Ρ‚ ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΈ высоту Π² пиксСлях.
  • Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ Π»Π΅Π²Ρ‹ΠΉ ΡƒΠ³ΠΎΠ» ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ x=0 ΠΈ y=0 . НиТний Π»Π΅Π²Ρ‹ΠΉ ΡƒΠ³ΠΎΠ» ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρƒ x=0 ΠΈ y=height
    . Π’Π΅Ρ€Ρ…Π½ΠΈΠΉ ΠΏΡ€Π°Π²Ρ‹ΠΉ ΡƒΠ³ΠΎΠ» ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρƒ .Ρ…=ΡˆΠΈΡ€ΠΈΠ½Π° ΠΈ высота=0

β†’ ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

← Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠΉ мСня!
 
 

β†’ ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅:

  • Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Ρ‚Ρ€Π΅Ρ… ΠΊΡ€ΡƒΠ³ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚


β†’ ОбъяснСниС:

  • ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ элСмСнта задаСтся Π² пиксСлях . Но Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ… Ρ€Π°Π²Π΅Π½ , Π° Π½Π΅ .
  • Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½Π°ΠΌ Π½ΡƒΠΆΠ½Π° функция, которая ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ числовая пСрСмСнная Π² ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π² пиксСлях. Π­Ρ‚ΠΎ называСтся шкала
  • Если ΠΌΠΎΠΈ Π΄Π°Π½Π½Ρ‹Π΅ прСдставлСны Π² ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π°Ρ…, Π° моя ΠΎΠ±Π»Π°ΡΡ‚ΡŒ svg ΠΈΠΌΠ΅Π΅Ρ‚ ΡˆΠΈΡ€ΠΈΠ½Ρƒ 400 пиксСлСй. 0% β†’ 0 пиксСлСй. 100% β†’ 400 пиксСлСй. 50% β†’ 200 пиксСлСй.
  • Π¨ΠΊΠ°Π»Π° всСгда ΠΈΠΌΠ΅Π΅Ρ‚ Π΄ΠΎΠΌΠ΅Π½ (здСсь ΠΎΡ‚ 0 Π΄ΠΎ 100%) ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ (здСсь ΠΎΡ‚ 0 Π΄ΠΎ 400 пиксСлСй)
  • ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π± ΠΏΠΎ оси X называСтся x . Если Π²Ρ‹ запуститС x(10) , d3 Π²Π΅Ρ€Π½Π΅Ρ‚ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π² px для этого значСния

β†’ ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

← Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠΉ мСня!
 
 

β†’ ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅:

  • Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ значСния Π΄ΠΎΠΌΠ΅Π½Π° ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.
  • Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡˆΠΊΠ°Π»Ρƒ Y, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ ΠΊΡ€ΡƒΠ³ΠΈ Π²Π²Π΅Ρ€Ρ… ΠΈΠ»ΠΈ Π²Π½ΠΈΠ·. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ 0px находится свСрху!


β†’ ОбъяснСниС:

  • D3 ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ нСсколько Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для автоматичСского рисования оси .
  • Π­Ρ‚ΠΈ оси всСгда Ρ€ΠΈΡΡƒΡŽΡ‚ΡΡ ΠΏΠΎΠ²Π΅Ρ€Ρ… шкала . Π­Ρ‚Π° шкала ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ , Π³Π΄Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ ось, ΠΈ ΠΊΠ°ΠΊΠΎΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ.
  • Ѐункция axisBottom() создаСт Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΡƒΡŽ ось с дСлСниями ΠΈ ΠΌΠ΅Ρ‚ΠΊΠ°ΠΌΠΈ Π²Π½ΠΈΠ·Ρƒ. axisLeft() Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ·ΠΆΠ΅ для оси Y

β†’ ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

← Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠΉ мСня!
 
 

β†’ ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅:

  • Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΄ΠΎΠΌΠ΅Π½ ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.


β†’ ОбъяснСниС:

  • ПолоТСниС оси часто Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ . НапримСр, ось X ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ располагаСтся Π½Π° Π½ΠΈΠΆΠ½Π΅ΠΉ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅.
  • Π­Ρ‚ΠΎ стало Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ благодаря ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρƒ . По сути, примСняя .attr("transform", "translate(20,50)") ΠΊ элСмСнту с Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠΌ Π½Π° 20 пиксСлСй Π²ΠΏΡ€Π°Π²ΠΎ ΠΈ Π½Π° 50 пиксСлСй Π²Π½ΠΈΠ·.
  • ΠžΡ‡Π΅Π½ΡŒ распространСнная стратСгия Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° ΠΊ ΠΎΠ±Ρ‰Π΅ΠΉ области svg , создавая нСбольшоС ΠΏΠΎΠ»Π΅ Π²ΠΎΠΊΡ€ΡƒΠ³ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹, Π½Π΅ Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°ΡΡΡŒ ΠΎΠ± этом Π² ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΉ части ΠΊΠΎΠ΄Π°. Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΡ‡Ρ‚ΠΈ всС Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ d3.js Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

β†’ ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

← Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠΉ мСня!

 
 

β†’ ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅:

  • ΠŸΠΎΠΈΠ³Ρ€Π°ΠΉΡ‚Π΅ со значСниями поля, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Ρ‰Π΅ Ρ€Π°Π· ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.
  • Π£Π΄Π°Π»ΠΈΡ‚ΡŒ нСсколько строк Π² svg созданиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.


β†’ ОбъяснСниС:

  • ΠŸΡ€ΠΈΠ²ΡΠ·ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΊ элСмСнтам svg β€” это послСдний шаг, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ для Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ рассСивания. На ΠΌΠΎΠΉ взгляд, это Ρ‚Π°ΠΊΠΆΠ΅ самая слоТная для понимания Ρ‡Π°ΡΡ‚ΡŒ .
  • ВсСгда слСдуСт ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ шагам:
    • svg : Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ svg, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ находится Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°
    • .selectAll("нСзависимо") : Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ всС элСмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅Ρ‰Π΅ Π½Π΅ Π±Ρ‹Π»ΠΈ созданы, я знаю, Ρ‡Ρ‚ΠΎ это странно.
    • .data(data) : ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅ для использования.
    • .enter() : Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ†ΠΈΠΊΠ» для Π΄Π°Π½Π½Ρ‹Ρ…. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ ΠΊ data[0] , data[1] ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.
    • .append("circle") : для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΊΡ€ΡƒΠ³.
    • .attr("cx", function(d){ return x(d.x) }) : Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΡ€ΡƒΠ³Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ x . Π—Π΄Π΅ΡΡŒ d Π±ΡƒΠ΄Π΅Ρ‚ data[0] , Ρ‚ΠΎΠ³Π΄Π° Π΄Π°Π½Π½Ρ‹Π΅[1] ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, d.x β€” это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ x , Π° x(d.x) β€” ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ позиция Π² пиксСлях, найдСнная благодаря ΠΌΠ°ΡΡˆΡ‚Π°Π±Ρƒ x .

β†’ ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

← Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠΉ мСня!

 
 

β†’ ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅:

ВСроятно, это самая слоТная концСпция Π² d3.js. И ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠΎΡ‡Ρ‚ΠΈ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅. На самом Π΄Π΅Π»Π΅ это сила d3: привязка Π΄Π°Π½Π½Ρ‹Ρ… ΠΊ элСмСнтам

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, стоит ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ большС Π½Π° эту Ρ‚Π΅ΠΌΡƒ. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ d3 ΠΈ Dashing d3.js.



Π­Ρ‚ΠΎΡ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ прСдставляСт собой ΠΎΡ‡Π΅Π½ΡŒ-ΠΎΡ‡Π΅Π½ΡŒ ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² d3.js. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΎΠ½ описываСт основныС понятия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΠΎΡ‡Ρ‚ΠΈ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹, вСроятно, Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π³Π°Π»Π΅Ρ€Π΅ΡŽ. Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ Π΅ΡΡ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ.

ВсС Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ | ГалСрСя Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² D3

Бамая простая


Бамая простая Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° с областями, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² d3.js. Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ядра ΠΊΠΎΠ΄.

ДвумСрная гистограмма


Π‘Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ Π² ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ячСйки. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ благодаря ΠΏΠ»Π°Π³ΠΈΠ½ d3-rectbin .

ΠšΠΎΠ½Ρ‚ΡƒΡ€Π½Ρ‹ΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊ


ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½ΠΎΠ² ΠΊΠΎΠ½Ρ‚ΡƒΡ€Π°, вычислСнноС с использованиСм ΠΌΠ°Ρ€ΡˆΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ²

Бамая простая


Бамая простая ΠΊΠΎΠ»ΡŒΡ†Π΅Π²Π°Ρ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² d3.js. Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ядра ΠΊΠΎΠ΄.

НаиболСС простой


Бамая простая тСпловая ΠΊΠ°Ρ€Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² d3.js. Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ основного ΠΊΠΎΠ΄Π°.

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ подсказку ΠΊ Ρ‚Π΅ΠΏΠ»ΠΎΠ²ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚Π΅


Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ подсказку, которая ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ячСйки ΠΈ Π»ΡŽΠ±Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ тСкст.

Готовая тСпловая ΠΊΠ°Ρ€Ρ‚Π°


Π˜Π½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Π°Ρ тСпловая ΠΊΠ°Ρ€Ρ‚Π°, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ эффСкт навСдСния, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ ось, Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, Ρ„Π°Π½Ρ‚Π°Π·ΠΈΠΈ цвСтовая ΠΏΠ°Π»ΠΈΡ‚Ρ€Π°, Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰Π°Ρ подсказка ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅

Визуализация ΠžΡ‚Π²Π΅Ρ€ΠΆΠ΅Π½Π½Ρ‹Ρ…


Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Π°Ρ тСпловая ΠΊΠ°Ρ€Ρ‚Π° с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² Π³Ρ€ΡƒΠΏΠΏΠΎΠ²ΠΎΠΌ Π·Π°ΠΊΠ°Π·Π΅

Бамая простая


Бамая простая Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° с областями, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² d3. js. Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ядра ΠΊΠΎΠ΄.

Π‘Π°ΠΌΡ‹ΠΉ простой


Бамая простая гистограмма, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² d3.js. Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ основного ΠΊΠΎΠ΄Π°.

Π¦Π²Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π΄Π΅Ρ‚Π°Π»ΠΈ


Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ простой ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if-else , Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°ΡΠΊΡ€Π°ΡΠΈΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ гистограмма.

Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠΈΡ‚Π΅, ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ Π² Π²ΠΈΠ΄Π΅ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ полосы.

Двойная гистограмма


Двойная гистограмма ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ΄ΠΎΠ±Π½Π° для сравнСния распрСдСлСния 2 ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅.

ΠŸΡ€ΠΈΡΡ‚Π½ΠΎ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ функция filter() .

Кнопка для управлСния Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ ΠΊΠΎΡ€Π·ΠΈΠ½Ρ‹


Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ, которая управляСт Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ ΠΊΠΎΡ€Π·ΠΈΠ½Ρ‹. Π₯ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ функция обновлСния, которая Ρ‚Π°ΠΊΠΆΠ΅ обновляСт ось.

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ подсказку


ПолСзно для получСния ΠΏΠΎΡ€ΠΎΠ³Π° Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π±Π°Ρ€Π°. НСобходимо ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ хотя.

Π‘Π°ΠΌΡ‹ΠΉ простой


Бамая простая подсказка, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² d3.js.
ΠŸΡ€ΠΎΡΡ‚ΠΎ создайтС ΠΎΠ΄Π½Ρƒ Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ подсказку Π·Π° ΠΎΠ΄ΠΈΠ½ ΠΊΡ€ΡƒΠ³

HTML Π²ΠΎ Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ подсказкС


Π£Π·Π½Π°ΠΉΡ‚Π΅, ΠΊΠ°ΠΊ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ подсказку: Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊ Π½Π΅ΠΉ любой HTML-ΠΊΠΎΠ΄!

Π’ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰Π°Ρ подсказка, связанная с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ


Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ подсказку, ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰ΡƒΡŽΡΡ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚ΠΎΡ‡ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…

Π—Π°ΠΊΡ€Π°ΡˆΠΈΠ²Π°Π½ΠΈΠ΅


Как ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π·Π°ΠΊΡ€Π°ΡˆΠΈΠ²Π°Π½ΠΈΠ΅ Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅ для Π²Ρ‹Π±ΠΎΡ€Π° Ρ‚ΠΎΡ‡Π΅ΠΊ.

Π’ΠΈΠΏΡ‹ ΠΊΠ½ΠΎΠΏΠΎΠΊ HTML


HTML ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΊΠ½ΠΎΠΏΠΎΠΊ: Π²ΠΎΡ‚ описаниС ΠΈΡ… с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.

Π‘Π°ΠΌΡ‹ΠΉ простой


Π‘Π°ΠΌΡ‹ΠΉ простой ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² d3. js.
Он просто ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ ΡˆΠΈΡ€ΠΈΠ½Ρ‹ div с использованиСм d3.js, сохраняя Ρ‚ΠΎΠ»ΡŒΠΊΠΎ основной ΠΊΠΎΠ΄.

ΠŸΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ нСсколько ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ²


Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ нСсколько ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² ΠΎΠ΄ΠΈΠ½ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ. Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΊΠ°ΠΊ Ρ†Π²Π΅Ρ‚ ΠΈ ΡˆΠΈΡ€ΠΈΠ½Π°.

Бамая простая


Бамая простая линСйная Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² d3.js. Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ядра ΠΊΠΎΠ΄.

НСсколько Π³Ρ€ΡƒΠΏΠΏ


Π£Π·Π½Π°ΠΉΡ‚Π΅, ΠΊΠ°ΠΊ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ нСсколько Π³Ρ€ΡƒΠΏΠΏ Π½Π° Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΌ Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅. Π­Ρ‚ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ сгруппируйтС Π΄Π°Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ d3.nest.

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Ρ…ΠΎΠ΄Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ


Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΡƒΡŽ ΠΏΠ»Π°Π²Π½ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄. ПолСзно, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ update() .

Π‘Π°ΠΌΡ‹ΠΉ простой


Бамая простая лСдСнцовая Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² d3. js. Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ядра ΠΊΠΎΠ΄.

ΠŸΠΎΠ²Π΅Ρ€Π½ΠΈΡ‚Π΅ Π΅Π³ΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎ


Π“Ρ€Π°Ρ„ΠΈΠΊ с Π»Π΅Π΄Π΅Π½Ρ†Π°ΠΌΠΈ часто выглядит Π»ΡƒΡ‡ΡˆΠ΅ Π² Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ: это ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ нанСсСниС этикСтки Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ. НайдитС, ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ!

Π“Ρ€ΡƒΠΏΠΏΡ‹ Π·Π°ΠΊΠ°Π·ΠΎΠ²


Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ свою Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡƒ Π±ΠΎΠ»Π΅Π΅ понятной: ΠΏΠ΅Ρ€Π΅ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΡŒΡ‚Π΅ Π³Ρ€ΡƒΠΏΠΏΡ‹, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π΅Ρ‰Π΅ 3 строки ΠΊΠΎΠ΄.

КливлСнд Ρ‚ΠΎΡ‡Π΅Ρ‡Π½Ρ‹ΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊ


Π Π°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ Π»Π΅Π΄Π΅Π½Ρ†Π°, Π³Π΄Π΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ доступны 2 ряда Π΄Π°Π½Π½Ρ‹Ρ… Π³Ρ€ΡƒΠΏΠΏΠ°.

Базовая анимация ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅


Π’ΠΎΡ‡ΠΊΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с x=0 ΠΈ Π·Π°Ρ‚Π΅ΠΌ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ своС Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Π‘Π°ΠΌΡ‹ΠΉ простой


Π‘Π°ΠΌΡ‹ΠΉ простой сСтСвой Π³Ρ€Π°Ρ„ΠΈΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² d3.js. Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ядра ΠΊΠΎΠ΄.

Π€ΠΎΡ€ΠΌΠ°Ρ‚ Π²Π²ΠΎΠ΄Π°: JSON

Π‘Π°ΠΌΡ‹ΠΉ простой


Бамая простая Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² d3. js. Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ основной ΠΊΠΎΠ΄.

Бамая простая


Бамая простая круговая Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² d3.js. Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ основного ΠΊΠΎΠ΄Π°.

Π‘Π°ΠΌΡ‹ΠΉ простой


Π‘Π°ΠΌΡ‹ΠΉ простой Π³Ρ€Π°Ρ„ΠΈΠΊ Ρ…Ρ€Π΅Π±Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² d3.js. Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ядра ΠΊΠΎΠ΄.

Π’Ρ‹Π±ΠΎΡ€ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ суток для занятий спортом


ΠšΡ€Π°ΡΠΈΠ²Ρ‹ΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊ Π»ΠΈΠ½ΠΈΠΈ Ρ…Ρ€Π΅Π±Ρ‚Π° Π­Π½Π΄Ρ€ΡŽ Моллики, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ количСство участников для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π²ΠΈΠ΄ΠΎΠ² спорта Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ дня.

Линия Ρ…Ρ€Π΅Π±Ρ‚Π° ΠΈΠ»ΠΈ участок Радости


РСализация Майка Бостока.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ d3.v5. это Π½Π°Π±Π»ΡŽΠ΄Π°Π΅ΠΌΡ‹ΠΉ Π½ΠΎΡƒΡ‚Π±ΡƒΠΊΠΈ -> Π΅Ρ‰Π΅ Π»ΡƒΡ‡ΡˆΠ΅.

Π‘Π°ΠΌΡ‹ΠΉ простой


Бамая простая Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° Π‘Π°Π½ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² d3.js. Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ядра ΠΊΠΎΠ΄.

Π€ΠΎΡ€ΠΌΠ°Ρ‚ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…: Json

ΠŸΠΎΡ‚ΠΎΠΊ производства энСргии


ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡ‚Π²ΠΎ ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ энСргии Π² Π’Π΅Π»ΠΈΠΊΠΎΠ±Ρ€ΠΈΡ‚Π°Π½ΠΈΠΈ Π² 2050 Π³. : поставки энСргии находятся Π½Π° слСва, Π° трСбования справа

Бамая простая


Бамая простая Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° рассСяния, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² d3.js. Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ядра ΠΊΠΎΠ΄.

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ подсказки


Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ подсказку, которая появляСтся рядом с ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΈ Π½Π° Π½Π΅Π΅ курсора

Бамая простая


Основная сгруппированная Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° рассСяния: каТдая Π³Ρ€ΡƒΠΏΠΏΠ° ΠΈΠΌΠ΅Π΅Ρ‚ свой Ρ†Π²Π΅Ρ‚.

Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π³Ρ€ΡƒΠΏΠΏΡ‹


Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π³Ρ€ΡƒΠΏΠΏΡ‹ Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΏΡ€ΠΈ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΈ курсора Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π΅Π΅ Ρ‡Π»Π΅Π½ΠΎΠ²

Анимация ΠΏΡ€ΠΈ запускС


Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚ΠΎΡ‡ΠΊΠΈ появлялись ΠΎΠ΄Π½Π° Π·Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΄Ρ€ΡƒΠ³ΡƒΡŽ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ для ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ.

ΠšΠΈΡΡ‚ΡŒ


Π£Π·Π½Π°ΠΉΡ‚Π΅, ΠΊΠ°ΠΊ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΊΠΈΡΡ‚ΡŒ ΠΈ ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΠΈ Π² области кисти

ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ оси X


Кнопка управляСт Π²Π΅Ρ€Ρ…Π½ΠΈΠΌ ΠΏΡ€Π΅Π΄Π΅Π»ΠΎΠΌ оси X ΠΈ запускаСт ΠΏΠ»Π°Π²Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π΄ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π»ΠΈΠΌΠΈΡ‚Π°

ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ функция Ρ€Π°Π΄ΠΈΠΎΠ»ΠΎΠΊΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚Ρ‹


ΠΠ»ΡŒΠ²Π°Ρ€ΠΎ ГрСйвс Π±Ρ‹Π» ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ, ΠΊΡ‚ΠΎ построил Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для Ρ€Π°Π΄Π°Ρ€Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°.

НаТмитС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΠ΅Ρ‚ΠΈΡ‚ΡŒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ github ΠΈ Π½Π°ΠΉΡ‚ΠΈ нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ².

Π Π΅Π΄ΠΈΠ·Π°ΠΉΠ½ Ρ€Π°Π΄Π°Ρ€Π½ΠΎΠΉ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹


Нади Π‘Ρ€Π΅ΠΌΠ΅Ρ€ пСрСсмотрСла ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡƒ с Π±ΠΎΠ»Π΅Π΅ простым ΠΊΠΎΠ΄ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²ΠΈΠ΄.

Basic ΠΈΠ· Π΄Π»ΠΈΠ½Π½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°


Бамая простая Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° с областями с Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² d3.js. Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ основной ΠΊΠΎΠ΄.

Π€ΠΎΡ€ΠΌΠ°Ρ‚ Π²Π²ΠΎΠ΄Π°: Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ (Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½Ρ‹ΠΉ)

Basic from wide input


Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° базовая Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° с Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½ΠΈΠ΅ΠΌ областСй, созданная Π² d3.js.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ здСсь Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π²Π²ΠΎΠ΄Π° ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ (Π½Π΅Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½Ρ‹ΠΉ): каТдая Π³Ρ€ΡƒΠΏΠΏΠ° прСдставлСна ​​в ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ столбцС.

Π‘Π°ΠΌΡ‹ΠΉ простой


Π‘Π°ΠΌΡ‹ΠΉ простой ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Ρ‹ΠΉ Π³Ρ€Π°Ρ„, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² d3.js. Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ядра ΠΊΠΎΠ΄.

Π€ΠΎΡ€ΠΌΠ°Ρ‚ Π²Π²ΠΎΠ΄Π°: ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ (Π½Π΅Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½Ρ‹ΠΉ)

Бамая простая


Бамая простая дрСвовидная ΠΊΠ°Ρ€Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² d3. js. Волько ΠΎΠ΄ΠΈΠ½ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ прСдставлСн.

Π’Π²ΠΎΠ΄: Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ csv

Бкрипичная Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°


Π—Π΄Π΅ΡΡŒ функция сглаТивания ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для прСобразования Π·Π΅Ρ€ΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ гистограммы Π² ΡΡŽΠΆΠ΅Ρ‚ для скрипки.

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚: Π±Π΅Π· сглаТивания


Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ Π³Ρ€Π°Ρ„ΠΈΠΊΠ° Π±Π΅Π· сглаТивания

Вариация: ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ шаги


Π—Π΄Π΅ΡΡŒ функция curveStep ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для интСрполяции Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ: ΠΎΠ½Π° ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ основная структура гистограммы.

Π‘Π°ΠΌΡ‹ΠΉ простой


Π‘Π°ΠΌΡ‹ΠΉ простой Π³Ρ€Π°Ρ„ΠΈΠΊ для скрипки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² d3.js. Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ядра ΠΊΠΎΠ΄.

Π‘ΠΊΡ€ΠΈΠΏΠΊΠ° с Π΄Ρ€ΠΎΠΆΠ°Π½ΠΈΠ΅ΠΌ


Половина скрипки ΡƒΠ΄Π°Π»Π΅Π½Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ наблюдСния. Π”Ρ€ΠΎΠΆΠ°Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ пСрСкрытия Ρ‚ΠΎΡ‡Π΅ΠΊ.

Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° для скрипки


ΠšΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΊΠΎΠ΄ для построСния Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ для скрипки ΠΈΠ· Ρ‚Ρ€Π΅Ρ… Ρ„ΠΈΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… массивов.

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *