D3可视化学习
D3可视化学习
- 动态效果
| 方法 | 说明 |
|---|---|
| transition() | 状态转移 |
| duration() | 指定过渡的持续时间,单位为毫秒 |
| ease() | 指定过渡的方式(linear, circle, elastic, bounce) |
| delay() | 指定延迟的时间,表示一定时间后才开始转变 |
var circle1 = svg.append("circle")
.attr("cx", 100)
.attr("cy", 100)
.attr("r", 45)
.style("fill", "green")
circle1.transition()
.duration(1000)
.attr("cx", 300)
.style("fill", "steelblue")
- 理解Update, Enter, Exit的用法
处理选择的元素和数据的数量关系不确定的情况 update表示对齐的部分
- 元素的个数 < 数据的个数, 使用enter,添加元素
- 元素的个数 > 数据的个数, 使用exit,删除元素
// 假定body里面有三个p元素
var dataset = [3, 6, 9, 12, 15];
// 选择body中的p元素
var p = d3.select("body").selectAll("p");
// 获取update部分
var update = p.data(dataset);
// 获取enter部分
var enter = update.enter();
// 如果元素p的个数大于dataset的个数时
var exit = update.exit();
// update部分的处理:更新属性值
update.text(function(d) {
return "update " + d;
});
// enter部分的处理;添加元素后赋予属性值
enter.append("p")
.text(function(d) {
return "enter " + d;
});
- 交互式操作
在d3中,每一个选择集都有on()函数,用于添加事件监听器。
var circle = svg.append("circle")
circle.on("click", function(){
//add some processing code
});
- 布局(layout)
Layout: 决定什么元素绘制在哪里 数据->布局->获得绘图所需的数据->在画布上添加相应的图形->图表
| Layout | 说明 |
|---|---|
| Pie | 饼状图 |
| Force | 力导向图 |
| Chord | 弦图 |
| Tree | 树状图 |
| Cluster | 集群图 |
| Bundle | 捆图 |
| Pack | 打包图 |
| Histogram | 直方图 |
| Partition | 分区图 |
| Stack | 堆栈图 |
| Treemap | 矩阵树图 |
| Hierarchy | 层级图 |