当前位置 : 主页 > 网络编程 > 其它编程 >

D3.js可视化前端框架的运用要点

来源:互联网 收集:自由互联 发布时间:2023-07-02
1.装置2.引见d3.select()和d3.selec 1.装置 2.引见 d3.select()和d3.selectAll(); 1 2 3 供应2个要领:datum()和data(). datum():是指绑定一个数据到挑选集上。data():绑定一个数组到挑选集上,而且数组的各项
1.装置2.引见d3.select()和d3.selec

1.装置

2.引见

  • d3.select()和d3.selectAll();

1

2

3

供应2个要领:datum()和data().

datum():是指绑定一个数据到挑选集上。data():绑定一个数组到挑选集上,而且数组的各项值与挑选集的各项绑定。

  • 元素的挑选还可以经由过程id 和class去查找

Pear

Banana

var p = body.selectAll(".myclass");p.style("color","red");
  • 元素的插进去

    append() insert()

body.append("p") .text("append p element");

  • 删除元素

var p = body.select("#myid"); p.remove();

3.绘图表的要素

绘图表之前都有一个前置事情要做,就是一切的东西都是画在svg上的。

var width = 300; //画布的宽度 var height = 300; //画布的高度 var svg = d3.select("body") //挑选文档中的body元素 .append("svg") //增加一个svg元素 .attr("width", width) //设定宽度 .attr("height", height); //设定高度

  • 比例尺(scale) 比例尺分为2种,一种是线性比例尺,一种是序数比例尺

先看线性比例尺代码

var dataset = [1.2, 2.3, 0.9, 1.5, 3.3]; var min = d3.min(dataset);var max = d3.max(dataset);var linear = d3.scale.linear() .domain([min, max]) .range([0, 300]);linear(0.9); //返回 0linear(2.3); //返回 175linear(3.3); //返回 300

线性比例尺 供应d3.scale.linear() 返回一个线性比例尺。个中domain,设定比例尺的定义域,range设定比例尺的值域。

个中 d3.min(数组称号) d3.max(数组称号) 分别是取得数组的最小值和最大值。

看序数比例尺的代码

var index = [0, 1, 2, 3, 4];var color = ["red", "blue", "green", "yellow", "black"];var ordinal = d3.scale.ordinal() .domain(index) .range(color);ordinal(0); //返回 redordinal(2); //返回 greenordinal(4); //返回 black

序数比例尺供应的是ordinal要领。d3.scale.ordinal() ;

那末定义完比例尺了,怎样去运用呢?

svg.selectAll("rect") .data(dataset) .enter() .append("rect") .attr("x",20) .attr("y",function(d,i){ return i * rectHeight; }) .attr("width",function(d){ return linear(d); //在这里用比例尺 }) .attr("height",rectHeight-2) .attr("fill","steelblue");

  • 坐标轴 axis
  • d3.svg.axis() 定义了一个坐标轴

  • scale():指定比例尺

  • orient():指定刻度的朝向

  • ticks():指定的刻度的数目
  • //数据var dataset = [ 2.5 , 2.1 , 1.7 , 1.3 , 0.9 ];//定义比例尺var linear = d3.scale.linear() .domain([0, d3.max(dataset)]) .range([0, 250]);var axis = d3.svg.axis() .scale(linear) //指定比例尺 .orient("bottom") //指定刻度的方向 .ticks(7); //指定刻度的数目 svg.append("g") .call(axis);

    4 图表的动画

    transition() // 启动动画

    duration(2000) //动画的持续时间

    ease(bounce) // 动画范例 经常运用的有linear circle elastic bounce

    5.图表的交互

    circle.on("click", function(){ //在这里增加交互内容});平常用on加事宜处置惩罚顺序

    鼠标经常运用的事宜有:

    click:鼠标单击某元素时,相当于 mousedown 和 mouseup 组合在一起。mouseover:光标放在某元素上。mouseout:光标从某元素上移出来时。mousemove:鼠标被挪动的时刻。mousedown:鼠标按钮被按下。mouseup:鼠标按钮被松开。dblclick:鼠标双击。键盘经常运用的事宜有三个:

    keydown:当用户按下任意键时触发,按住不放会反复触发此事宜。该事宜不会辨别字母的大小写,比方“A”和“a”被视为一致。keypress:当用户按下字符键(大小写字母、数字、加号、等号、回车等)时触发,按住不放会反复触发此事宜。该事宜辨别字母的大小写。keyup:当用户开释键时触发,不辨别字母的大小写。 触屏经常运用的事宜有三个:

    touchstart:当触摸点被放在触摸屏上时。touchmove:当触摸点在触摸屏上挪动时。touchend:当触摸点从触摸屏上拿开时。 当某个事宜被监听到时,D3 会把当前的事宜存到 d3.event 对象,内里保留了当前事宜的种种参数,请人人好好参详。假如须要监听到事宜后马上输出该事宜,可以增加一行代码:

    6. 图表的规划

    规划是帮你完成了数据转换,不是帮你完成了绘图

    D3 统共供应了 12 个规划:饼状图(Pie)、力导向图(Force)、弦图(Chord)、树状图(Tree)、集群图(Cluster)、捆图(Bundle)、打包图(Pack)、直方图(Histogram)、分区图(Partition)、客栈图(Stack)、矩阵树图(Treemap)、层级图(Hierarchy)。

    12 个规划中,层级图(Hierarchy)不能直接运用。集群图、打包图、分区图、树状图、矩阵树图是由层级图扩大来的。如此一来,可以运用的规划是 11 个(有 5 个是由层级图扩大而来)。这些规划的作用都是将某种数据转换成另一种数据,而转换后的数据是利于可视化的。

    详细看官网

    7.明白update。enter exit

    假如数组为 [3, 6, 9, 12, 15],将此数组绑定到三个 p 元素的挑选集上。可以设想,会有两个数据没有元素与之对应,这时刻 D3 会竖立两个空的元素与数据对应,这一部份就称为 Enter。而有元素与数据对应的部份称为 Update。假如数组为 [3],则会有两个元素没有数据绑定,那末没有数据绑定的部份被称为 Exit

    网友评论