Top Banner
ch.10 상호작용 d3.js Moon.D
30

[문디 10주차] d3.js 상호작용

Apr 14, 2017

Download

Data & Analytics

YooDuck Hwang
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: [문디 10주차] d3.js  상호작용

ch.10 상호작용

d3.js Moon.D

Page 2: [문디 10주차] d3.js  상호작용

d3.js Moon.D

• Mouseover

• 정렬

• Tooptip

오늘의 공부

Page 3: [문디 10주차] d3.js  상호작용

Mouseover

d3.js Moon.D

Page 4: [문디 10주차] d3.js  상호작용

d3.js Moon.D

hover practice.html

Page 5: [문디 10주차] d3.js  상호작용

d3.js Moon.D

CSS hover

<style type="text/css">

rect:hover {

fill: orange;

}

</style>

Page 6: [문디 10주차] d3.js  상호작용

d3.js Moon.D

mouseover practice.html

Page 7: [문디 10주차] d3.js  상호작용

d3.js Moon.D

.on(“mouseover”)

.on("mouseover", function() {

d3.select(this)

.attr("fill", "orange");

});

this : 작업중인 문서요소

이벤트 명 실행할 함수

Page 8: [문디 10주차] d3.js  상호작용

d3.js Moon.D

.on(“mouseout”)

.on("mouseout", function(d) {

d3.select(this)

.attr("fill", "rgb(0, 0, " + (d * 10) + ")");

});

Page 9: [문디 10주차] d3.js  상호작용

d3.js Moon.D

text 위에서 작동하지 않는다

Page 10: [문디 10주차] d3.js  상호작용

d3.js Moon.D

text 위 작동해결

<style type="text/css">

svg text {

pointer-events: none;

}

</style>

Page 11: [문디 10주차] d3.js  상호작용

Sort

d3.js Moon.D

Page 12: [문디 10주차] d3.js  상호작용

d3.js Moon.D

sort practice.html

Page 13: [문디 10주차] d3.js  상호작용

d3.js Moon.D

sortBars()

d3.select(“p")

.on("click", function() {

sortBars();

});

“p”를 클릭하면 다음의 함수를 실행한다

Page 14: [문디 10주차] d3.js  상호작용

d3.js Moon.D

var sortBars = function() {

svg.selectAll("rect")

.sort(function(a, b) {

return d3.ascending(a, b);

})

.transition()

.duration(1000)

.attr("x", function(d, i) {

return xScale(i);

});

// 모든 rect를 선택한다

Page 15: [문디 10주차] d3.js  상호작용

d3.js Moon.D

.sort(function(a, b) {

return d3.ascending(a, b);

})

sort() 데이터 값을 기반으로 재정렬

//(a, b) 코딩 관습

d3.ascending(a, b) 비교 함수

• 값이 큰 쪽을 내보냄

• 모든 데이터 에서 순회

Page 16: [문디 10주차] d3.js  상호작용

d3.js Moon.D

svg.selectAll("rect")

.sort(function(a, b) {

return d3.ascending(a, b);

})

.transition()

.duration(1000)

.attr("x", function(d, i) {

return xScale(i)+ xScale.rangeBand() / 2;;

});

// 모든 text(라벨)를 선택한다

라벨도 정렬하자

Page 17: [문디 10주차] d3.js  상호작용

d3.js Moon.D

p 문서요소를 클릭해보자

Page 18: [문디 10주차] d3.js  상호작용

반대방향 정렬도 해보자

d3.js Moon.D

Page 19: [문디 10주차] d3.js  상호작용

d3.js Moon.D

var sortOrder = false;

var sortBars = function() {

sortOrder = !sortOrder;

svg.selectAll("rect")

.sort(function(a, b) {

if (sortOrder) {

return d3.ascending(a, b);

} else {

return d3.descending(a, b);

}

})

// 블리언 변수 : 차트의 현재 상태를 기억

// 클릭할때마다 false - true 로 번갈아 바뀐다

// sortOrder = true 일때

// sortOrder = false 일때

Page 20: [문디 10주차] d3.js  상호작용

Tooltip

d3.js Moon.D

1. “title” 메서드 2. SVG 3. HTML

Page 21: [문디 10주차] d3.js  상호작용

d3.js Moon.D

tooltip practice.html

Page 22: [문디 10주차] d3.js  상호작용

d3.js Moon.D

.append(“title”)

.append(“title”)

.text(function(d) {

return d

});

//tooltip 메서드

Page 23: [문디 10주차] d3.js  상호작용

d3.js Moon.D

SVG Tooltip

Page 24: [문디 10주차] d3.js  상호작용

d3.js Moon.D

SVG로 Tooltip만들기

패쓰!

Page 25: [문디 10주차] d3.js  상호작용

d3.js Moon.D

HTML Tooltip

Page 26: [문디 10주차] d3.js  상호작용

d3.js Moon.D

div_tooltip.html

Page 27: [문디 10주차] d3.js  상호작용

d3.js Moon.D

1. HTML div 생성

<div id="tooltip" class="hidden">

<p><strong>아래에 라벨이 표시됩니다.</strong></p>

<p><span id="value">100</span>%</p>

</div>

Page 28: [문디 10주차] d3.js  상호작용

d3.js Moon.D

2. CSS 추가absolute 일 때 위치를 완벽히 제어 가능

Page 29: [문디 10주차] d3.js  상호작용

d3.js Moon.D

3. .on() 수정

Page 30: [문디 10주차] d3.js  상호작용

여러분 마음 알아요 ...

d3.js Moon.D