D3入门篇 01 | 选择集及数据处理
选择器
选择元素
函数 | 返回值 |
---|---|
select() | 匹配的第一个元素 |
selectAll() | 匹配的所有元素 |
<!DOCTYPE html> |
选择集属性
选择器返回结果即为选择集
函数 | 返回值 |
---|---|
selection.empty() | 选择集为空,返回Ture,反之亦然 |
selection.node() | 选中集非空,返回第一个非空元素,选择集为空,返回null |
selection.size() | 选中集的元素个数 |
选择集操作
函数 | 参数 | 返回值 |
---|---|---|
selection.attr(name,value) | name:属性名 value:属性值 |
value为空时,返回当前属性值 Value非空是,设置name属性改为value值 |
selection.classed(name,value) selection.classed{“name1”:true,“name2”,false}) |
name:类名 value:布尔值 |
value为空时,返回当前类的布尔值 Value非空是,设置name类名改为value值 |
selection.style(name,value) | name:样式名 value:样式值 |
value为空时,返回当前样式值 Value非空是,设置name样式名改为value值 |
selection.property(name,value) | name:属性名 value:属性值 |
value为空时,返回当前属性值 Value非空是,设置name属性改为value值 |
selection.text() | 文本内容,不包含其他元素标签 | |
selection.html() | 包括元素内部标签 | |
selection.append(name) | name:元素名 | 在选择集末尾添加元素 |
selection.insert(name,before) | name:元素名 before:选择器名称 |
在选择集指定元素前插入元素 |
selection.remove() | 删除选择集选中元素 | |
selection.filter(func) | func:函数 | 根据func函数条件获取选择集的子集 |
selection.each(func) | func:函数 | 在func函数里对选择集的各个元素进行处理 |
selection.call(func) | func:函数 | 将选择集自身传递给func函数 |
selection.sort(func) | func:函数 | 根据func函数规则来排序 |
attr() 不能应用到文本框,复选框等一部分组件中,需要用property来获取值和设置值
设置文本空的值 d3.select(“#email”).property(“value”,”1234@163.com“)
数据绑定
函数 | 参数 | 返回值 |
---|---|---|
selection**.datum**(value) | value:数据值 | 选择集中每个元素都绑定相同的数据value |
selection.data(values,key) | values:数组 key:键函数 |
选择集中每个元素都分别绑定数组values key非空时,以key定义规则绑定数据 |
update = selection.data(dataset)
函数 | 返回值 |
---|---|
update.enter() | 元素少于数据,需要让元素多“enter”几个,以此让所有数据都可以绑定到元素 |
update.exit() | 元素多于数据,需要让元素多“exit”几个,因为没有多余的数据来让元素绑定 |
通用处理模板:
var dataset = [1, 2, 3];
var p = d3.select(“body”).selectAll(“p”);
var update = p.data(dataset):
var enter = update.enter();
var exit = update.exit();
update.text(function(d){ return d; });
enter.append(“p”)
.text( function(d) { return d; } );
数据处理
数组
dataset = [1, 2, 3, 4, 5, 6]
函数 | 返回值 |
---|---|
dataset.sort( d3.ascending ) | 递增排序,直接修改数组 |
dataset.sort( d3.descending ) | 递减排序,直接修改数组 |
d3.shuffle( dataset ) | 随机排列,直接修改数组 |
d3.permute(dataset, indexs) | 根据indexs来排序数组 |
d3.pairs( dataset ) | 返回 i 项和 i-1 项组成的对的数组 |
d3.range( start, stop, step ) | 等差数列 |
d3.merge( dataset1, dataset2 ) | 两个数组合并为一个 |
d3.zip( dataset1, dataset2, … ) | 多个数组构成二维数组( 矩阵 ) |
d3.transpose( matrix ) | 转置矩阵 |
映射
函数 | 返回值 |
---|---|
d3.map( dataset ,key ) | 构造映射 |
d3.has(key) | key 非空,返回 true |
map.get(key) | key 非空,返回 value |
map.set(key, value) | 设置 key 为 value |
map.remove(key) | key 非空,删除后,返回 true |
map.keys() | 返回所有 key |
map.values() | 返回所有 value |
map.entries() | 返回所有 key,value |
map.forEach(function(k,v){}) | 对映射中的每一项调用function函数 |
map.empty() | map非空,返回 true |
map.size() | 映射大小 |
统计
函数 | 返回值 |
---|---|
d3.min( dataset, accessor ) | 最小值 |
d3.max( dataset, accessor ) | 最大值 |
d3.extent( dataset, accessor ) | 最小值和最大值 |
d3.sum( dataset, accessor ) | 总和 |
d3.mean( dataset, accessor ) | 平均值 |
d3.median( dataset, accessor ) | 数据集的中位数 |
d3.quantile( dataset, p) | p分之位数,p=0.25就是上四分位数 |
d3.variance( dataset, accessor ) | 方差 |
d3.deviation( dataset, accessor ) | 标准差 |
Accessor:数据访问器
min = d3.min( dataset, function(d) { return d*3 });
在所有的统计函数中,是将undefined和NaN去掉后,再计算返回值
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 白墨!
评论