D3

D3 - Update pattern

2021. 1. 13. 00:02
๋ชฉ์ฐจ
  1. ๐Ÿ“Œ ๋ชฉ์ฐจ
  2. ๐Ÿ“ŒIntroduction
  3. ๐Ÿ“Œ d3.interval
  4. ๐Ÿ“Œ Update pattern
  5. ๐Ÿ“ŒConclusion
๋ฐ˜์‘ํ˜•

๐Ÿ“Œ ๋ชฉ์ฐจ

  • Introuduction
  • d3.interval
  • Update pattern
  • Conclusion

๐Ÿ“ŒIntroduction

์•ˆ๋…•ํ•˜์„ธ์š”. ์˜ค๋Š˜์€ D3์—์„œ์˜ update pattern์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ d3.interval

update pattern์œผ๋กœ ๋“ค์–ด๊ฐ€๊ธฐ ์ „์— ์ž ์‹œ d3์˜ interval์— ๋Œ€ํ•ด์„œ ์†Œ๊ฐœํ• ๊นŒ ํ•ฉ๋‹ˆ๋‹ค. d3.interval์€ setInterval๊ณผ ๋งค์šฐ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค. ๋‹จ clearInterval์€ ์•ˆํ•ด์ค˜๋„ ๋œ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์–ด์š”.

d3.interval(() => {
    console.log("hello") // hello๊ฐ€ 1์ดˆ์— ํ•œ๋ฒˆ์”ฉ ์ฐํž˜
  }, 1000);

๐Ÿ“Œ Update pattern

updateํŒจํ„ด์€ data join๋ถ€ํ„ฐ ์‹œ์ž‘์ด ๋ฉ๋‹ˆ๋‹ค.

const rects = g.selectAll("rect").data(data, d => d.month);

์—ฌ๊ธฐ์„œ๋Š” ๋ถ„๋ช… rect๊ฐ€ ์•„์ง ์—†์—ˆ์„ ๊ฑฐ์˜ˆ์š”. ๊ทผ๋ฐ ๋’ค์— ์ด๋ ‡๊ฒŒ enter๋ฅผ ์“ฐ๋Š”๊ฑธ ๋ณธ์ ์ด ์žˆ์œผ์‹ค๊ฒ๋‹ˆ๋‹ค.

// DATA JOIN
  const rects = g.selectAll("rect").data(data, d => d.month);
  // ENTER
  rects
    .enter()
    .append("rect")
    .attr("fill", "grey")
    .attr("y", y(0))
    .attr("height", 0)
    .attr("x", (d) => x(d.month))
    .attr("y", (d) => y(d[value]))
    .attr("width", x.bandwidth)
    .attr("height", (d) => HEIGHT - y(d[value]));

์ด๋•Œ rects๋ฅผ ํ•œ๋ฒˆ ์ฐ์–ด๋ณด๊ฒŒ ๋˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‚˜์˜ฌ๊ฑฐ์˜ˆ์š”. exit, enter, parent, group์ด๋ ‡๊ฒŒ ๋‚˜์˜ฌ๊ฑฐ์˜ˆ์š”. ๊ทธ๋ž˜์„œ update๋Š” ์ด ์ค‘๊ฐ„์— ๋“ค์–ด๊ฐ€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒŒ ๋ฌด์Šจ๋ง์ธ๊ฐ€ ์‹ถ์ง€์š”? ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ๋ณด์„ธ์š”.

const rects = g.selectAll("rect").data(data, (d) => d.month);

  // EXIT
  rects
    .exit()
    .attr("fill", "red")
    .transition(t)
    .attr("height", 0)
    .attr("y", y(0))
    .remove();

  // UPDATE
  rects
    .transition(t)
    .attr("y", (d) => y(d[value]))
    .attr("x", (d) => x(d.month))
    .attr("width", x.bandwidth)
    .attr("height", (d) => HEIGHT - y(d[value]));

  yLabel.text(flag ? "Profit ($)" : "Revenue ($)");

  // ENTER
  rects
    .enter()
    .append("rect")
    .attr("fill", "grey")
    .attr("y", y(0))
    .attr("height", 0)
    .attr("x", (d) => x(d.month))
    .attr("y", (d) => y(d[value]))
    .attr("width", x.bandwidth)
    .attr("height", (d) => HEIGHT - y(d[value]));

์ด๋ ‡๊ฒŒ enter์™€ exit์„ ํ•˜์ง€ ์•Š๋Š” ๋ถ€๋ถ„์— ๋“ค์–ด๊ฐ€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ“ŒConclusion

์ด๋ ‡๊ฒŒ ์˜ค๋Š˜์€ ํ•œ๋ฒˆ update ํŒจํ„ด์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ๋‹ค์Œ์‹œ๊ฐ„์—๋Š” scatter plot์— ๋Œ€ํ•ด์„œ ํ•œ๋ฒˆ ์•Œ์•„๋ณผ๊ฒŒ์š”!

๋ฐ˜์‘ํ˜•

'D3' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

D3 - BarChart ๋งŒ๋“ค๊ธฐ  (0) 2021.01.07
D3 - Scale and Axes  (0) 2021.01.06
D3 - Baisc  (0) 2021.01.03
  1. ๐Ÿ“Œ ๋ชฉ์ฐจ
  2. ๐Ÿ“ŒIntroduction
  3. ๐Ÿ“Œ d3.interval
  4. ๐Ÿ“Œ Update pattern
  5. ๐Ÿ“ŒConclusion
'D3' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • D3 - BarChart ๋งŒ๋“ค๊ธฐ
  • D3 - Scale and Axes
  • D3 - Baisc
eddie0329
eddie0329
Front-end Developer
๋ฐ˜์‘ํ˜•
eddie0329
Eddie Sunny's Blog
eddie0329
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (100)
    • Summary of Book (0)
    • Vue Study (11)
    • Vue TDD (9)
    • Vue BDD (5)
    • Design Pattern (9)
    • Javascript Study (3)
    • React Study (15)
    • React TDD (1)
    • Vue Storybook (2)
    • Refactoring (0)
    • Graphql_Apollo (3)
    • Svelte (8)
    • Open Source (1)
    • D3 (4)
    • Typescript (1)
    • CSS (2)
    • Android (0)
    • Java (0)
    • Kotlin (0)
    • ์žก๋‹ด (0)
    • Swift (19)
    • Rust (2)
    • ํšŒ์‚ฌ์ด์•ผ๊ธฐ (2)
    • ReactNative Study (2)
    • Vitest (0)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • Home

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • react
  • vue cypress
  • vue tdd
  • Design Pattern
  • storybook6
  • client only
  • swift
  • svelte
  • vue bdd
  • Vue
  • CSS
  • TDD
  • vue storybook
  • Javascript
  • react-component-slot
  • TypeScript
  • Nextjs
  • javascript pattern
  • apollo
  • react useRef
  • BDD
  • swift5
  • React Native
  • Kotlin
  • vue3
  • Cypress
  • D3
  • Vue test
  • jest
  • slot ํŒจํ„ด

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

hELLO ยท Designed By ์ •์ƒ์šฐ.
eddie0329
D3 - Update pattern
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.