d3.js API 说明

 

一、brush(画刷)

brush实现绘制内容的选择,详细信息参见d3.js中关于brush的API文档,此处主要说明以下几个比较重要的函数和方法;

d3.brush()

创建一个二维的brush.示例代码:

var circles = context.append("g").attr("transform", "translate(" + margin.left + "," + margin.top + ")")

circles.selectAll(".circ")
            .data(data)
            .enter().append("circle")
            .attr("class", "circ")
            .attr("cx", function(d) {
                return (lessThanDay(padding.pad)) ? x(d.value) : x(getDate(d.value));
            })
            .attr("cy", function(d, i) {
                return (lessThanDay(padding.pad)) ? y(getDate(d.value)) : y(getTime(d.value));
            })
            .attr("r", 9)
            .on("click", function(d) {
                console.log(new Date(d.value));
            })

//==设置比例尺为时间比例尺,既输入数据为时间,输出数据为可通过图形展示的数值(横纵坐标刻度)===
var x = d3.time.scale().range([0 + margin.right, width - margin.left]),
    y = d3.time.scale().range([margin.top, height - margin.bottom - margin.top]);

//==================创建画刷,该画刷进行横向的图形数据选择==============================
//==============响应brush事件,重绘选择区域==========================
var brush = d3.svg.brush()
                .x(x)
                .on("brush", brushed);

 function brushed() {
                if (!brush.empty()) {
                    d3.select('.clear-brush').style("display", "inline-block");
                    d3.select('.brush-info')[0][0].innerText = brush.extent();
                }
            }
//================选择应用brush,表示画刷针对这些对象进行选择==============
circles.append("g")
                .attr("class", "brush")
                .call(brush)
                .selectAll("rect")
                .attr("y", -6)   //  设置brush的y为-6
                .attr("height", height - margin.bottom); //brush高度

brush.x

设置横纵标比例尺,若设置了横坐标比例尺,则横向范围可选择,同理可设置brush.y,若brush.x或brush.y任意设置为常数,则表示:在该坐标方向全向选择,比如上例中设置attr("y",-6)表示纵向选择范围为-6到y比例尺最大刻度,只能在横向范围进行选择;

brush.extent()

当设置数据时,表示设置画刷的选择范围,未设置参数时表示获取当前画刷的选择范围;数据设置参数应为二维数组,格式为brush.extent([[x0,y0],[x1,y1]]);其中x0,y0表示范围的最小坐标,x1,y1表示范围的最大坐标

brush.on

设置画刷事件,画刷支持三类事件:

  • brushstart - on mousedown
  • brush - on mousemove, if the brush extent has changed
  • brushend - 

brush.empty()

判断画刷的选择范围是否为空

brush.clear()

清除画刷也选择内容

二、比例尺

比例尺实现将输入数据至图形坐标轴绘制数据的对应转换,d3.js提供的比例尺有:d3.scale.linear (线性比例尺)、d3.scale.sqrt (方根比例尺)、d3.scale.pow (平方比例尺)、d3.scale.log (对数比例尺)、d3.scale.quantize(数字转化比例尺)、d3.scale.threshold(门限比例尺)、d3.scale.ordinal (序数比例尺)(类似对数据进行计数,数据的在数组中的序号返回)、d3.time.scale(时间比例尺,按照时间范围返回对应的坐标值) 

d3.scale.linear (线性比例尺):

实现数据与坐标数据之间的线性转换,常用属性与方法:

linear(x):获取数据的比例尺数据;

linear.invert(y):获取比例尺数据对应的数据;

 linear.domain([numbers]):设置比例尺的数据,该数据以数组的方式输入;

示例:将实现数据与颜色之间的一一对应转化;

var color = d3.scale.linear()
    .domain([-1, 0, 1])
    .range(["red", "white", "green"]);

linear.ticks([count]):设置刻度数量

linear.tickFormat(count, [format]):设置刻度显示格式

var x = d3.scale.linear().domain([-1, 1]);
console.log(x.ticks(5).map(x.tickFormat(5, "+%"))); // ["-100%", "-50%", "+0%", "+50%", "+100%"]

 

 d3.scale.ordinal(序数比例尺

 ordinal(x):获取domain数据x对应的序数;

ordinal.domain([values]):设置比例尺源数据;

ordinal.rangePoints([values]):返回序数可以是浮点数;

ordinal.rangeRoundPoints([values]):返回整型序数;

var o = d3.scale.ordinal()
    .domain([1, 2, 3, 4])
    .rangeRoundPoints([0, 100]);

o.range(); // [1, 34, 67, 100]

其它比例尺的使用,参照API

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值