D3 JS API之基础操作篇(一)

4 篇文章 0 订阅

D3.js 的 SelectAll 方法:
1,D3.js中的selectAll方法使用的是CSS3中的选择器来获取DOM元素。不同于select方法(该方法获取的是第一个目标元素),
而selectAll方法选择的是所有匹配的元素

D3.js的data操作符(operator):
1,data操作符是把一个数据数组(可能是数值数组、对象数组或者别的什么数组)与当前的选择结果联系(join)起来
2,Data数组中的每一个元素都被分配到当前选择结果中的一个元素上

D3.js的Virtual Selections:
1,data操作符返回的是三个Virtual selection: enter,update,exit。
2,enter选集:对所有缺失的元素以占位符placeholder替代。
3,update选集:包含现有的元素,并绑定到数据
4,剩下的元素最终都会出现在exit选集中,并被移除。
5,对于数组中的数据元素,如果缺少与之对应的DOM元素,那么就会有一个占位符来顶替,而enter方法返回的就是
这些占位符集合的引用(reference)。得到这个引用之后,就能对该集合操作了。
这个引用后只能链接(chaining)append,insert以及select操作符,通过他们来操作该引用所指向的集合
在这些操作符链接到.enter()选集,我们就可以像处理其他选集那样,来对其内容进行更改。

D3.js的Append操作符:
1,在数据数组中,有多少个数据元素(如1,2,3),.append(“p”)就创建并加入多少个P元素。

D3.js的text操作符:
1,text操作符对所有被选择的元素的textContent属性进行赋值。

D3.js操作符内的可用变量(variable available):
1,变量d在无名函数中的可用变量。这个变量是由D3.js提供的的,该变量是对要处理的元素的_data_属性的引用。
2,还有另外两个D3.js提供的变量可以用,他们是:this和i。
3,this代表的是当前在处理的DOM元素。
4,i是指当前处理的HTML元素在已选元素选集中的索引值。值得注意的是,所有要处理的数据都是按照一定的次序。注意:i是从0开始的

创建一个 SVG元素 来控制(hold)SVG的元素;
1,var circleRadii = [40,20,10];
2,var svgContainer = d3.select(“body”).append(“svg”).attr(“width”,200).attr(“height”,200);

数据绑定到SVG圆形上:
1,selectAll circle
2,绑定数据
3,选择虚.enter()选集
4,添加SVG的circle元素

5,var circles = svgContainer.selectAll("circle")
                       .data(circleRadii)
                       .enter()
                       .append("circle");

使用绑定的数据来更改SVG圆形:
circleRadii = [40,20,10];

var svgContainer = d3.select("body").append("svg")
                                .attr("width",600)
                                .attr("height",100);

var circles = svgContainer.selectAll("circle")
                      .data(circleRadii)
                      .enter()
                      .append("circle");

var circleAttributes = circles
                   .attr("cx",50)
                   .attr("cy",50)
                   .attr("r",function (d){return d;})
                   .style("fill",function (d){
                     var returnColor ;
                     if (d===40){returnColor = "green";
                     } else if (d===20){returnColor = "purple";
                     } else if (d===10){returnColor = "red";}
                     return returnColor;
                     });

使用SVG坐标空间:
1, var spaceCircles = [30,70,110];

SVG坐标空间

SVG坐标空间与数学图形坐标空间原理基本一样,除了下面两点:

1,SVG坐标空间中,x=0以及y=0的坐标是在左上方。

2,SVG坐标空间中,Y坐标轴的增长方式是自上而下。

创建一个SVG元素来持有SVG的元素:
createSvgElement() {
let spaceCircles = [30, 70, 110];
let svgContainer = d3.select(‘body’).append(‘svg’)
.style(‘width’, 200)
.style(‘height’, 200);

let circles = d3.select('svg').selectAll('circle')
  .data(spaceCircles)
  .enter()
  .append('circle') ;

let circleAttributes = circles.attr('cx', d => d)
  .attr('cy', d => d)
  .attr('r', 20)
  .style('background-color', d => {
    let returnColor = '';
    if (d === 30) {
      returnColor = 'green';
    } else if (d === 70) {
      returnColor = 'purple';
    } else if (d === 110) {
      returnColor = 'red';
    }
    return returnColor;
  });

}

JSON:
var secretAgent = {
“name”:“James Bond”,
“drink”:“dry martini-shaken,not stirred”,
“number”:“007”
};

JSON对象数组:
var jsonCircles = [
{
“x_axis”:30,
“y_axis”:30,
“radius”:20,
“color”:“green”
},{
“x_xis”:70,
“y_xis”:70,
“radius”:20,
“color”:“purple”
},{
“x_axis”:110,
“y_axis”:100,
“radius”:20,
“color”:“red”
}];

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值