d3fc-笔刷
适应了D3刷子,更容易地创建出由数据驱动,反应快的刷子图.
安装
npm install @d3fc/d3fc-brush
API 参考
API 概况
D3fc-brush 组件将修改 d3-笔刷实现以下目标:
- D3fc-brush由数据驱动,由通过数据加合提供的数据确定刷子的位置. 这样可以更容易地创建具有响应性的图表(即支持再缩放),与其他交互式组件如缩放相融合,并创建具有一能性的图表渲染逻辑.
- D3fc-brush 曝光
xScale财务报告和审定财务报表yScale属性,用于与 多号编 构成部分和 笛卡尔图 组件。 因此,根据每个轴的射程自动设定了刷子的范围. - D3fc-刷子选择(定义了刷子范围),以百分比表示,而d3-刷子使用像素. 使用百分数选择可以更容易地调整刷图大小.
- 刷子事件暴露了根据当前选择计算轴域的公用功能,使得处理刷子事件和更新图表更加容易.
创建导航图
刷子的一个常见应用是创建两个相连接的图表,一个起到"导航"的作用,允许用户在某个特定数据区域上放大. 此示例的完整代码见 examples 文件夹.
D3FC刷由数据驱动,因此第一步是创建数据对象,将标准序列数据与指定刷位置的范围相合并:
var chartData = {
series: data,
brushedRange: [0, 1]
};
D3FC刷使用与D3刷相同的数据格式:
对于二维画笔,是[[x0,y0],[x1,y1]],其中x0为最小x-值,y0为最小y-值,x1为最大x-值,y1为最大y-值. 对于一个x-刷子,是[x0,x1];对于一个y-刷子,是[y0,y1].
一个多系列可以用来将刷子和另一个系列结合,例如一个区域系列:
var brush = fc.brushX();
var multi = fc.seriesSvgMulti()
.series([area, brush])
.mapping((data, index, series) => {
switch (series[index]) {
case area:
return data.series;
case brush:
return data.brushedRange;
}
});
主图和航海图使用笛卡尔图组件提供,航海图使用上文定义的多系列:
var mainChart = fc.chartCartesian(x, y)
.svgPlotArea(area);
var navigatorChart = fc.chartCartesian(x.copy(), y.copy())
.svgPlotArea(multi);
function render() {
d3.select('#main-chart')
.datum(chartData.series)
.call(mainChart);
d3.select('#navigator-chart')
.datum(chartData)
.call(navigatorChart);
}
render();
最后一步是在刷子上添加事件处理器. 该事件连同 xDomain 财务报告和审定财务报表 yDomain 属性设置为刷新区域所代表的域.
事件处理器只是将数据"绑定"更新到图表,以反映新的选择并更新主图表的域. 由于这些图表具有一分能和数据驱动性,剩下的只是援引 render 函数.
var brush = fc.brushX()
.on('brush end', function(evt) {
chartData.brushedRange = evt.selection;
x.domain(evt.xDomain);
render();
});
如果您想要启用刷子, 使其不占据整个范围 [0, 1],您需要设置主图的初始域. 可以通过使用一个具有相同域和单位范围的尺度来实现:
var scale = d3.scaleLinear().domain(x.domain());
x.domain(chartData.brushedRange.map(scale.invert));
笔刷
{\fn方正粗倩简体\fs12\an8\1cHFFFF00\b0} 页:1.刷头(a) 与《公约》有关的其他事项
创建一个新的二维刷子.
{\fn方正粗倩简体\fs12\an8\1cHFFFF00\b0} 页:1.刷新X(a) 与《公约》有关的其他事项
沿着 x-dimension 创建一维刷.
{\fn方正粗倩简体\fs12\an8\1cHFFFF00\b0} 页:1.画笔Y(a) 与《公约》有关的其他事项
沿 Y-dimension 创建一维刷子 .
{\fn方正粗倩简体\fs12\an8\1cHFFFF00\b0} 刷头。 。 。 .打开(单位:千美元)类型名称, (中文(简体) ), [听众](中文(简体) )
为指定事件类型添加事件倾听器, 参见 调度. on 详细情况。 这个 类型 必须是下列情况之一:
start- 在刷子手势的起步,比如鼠标倒下.brush- 当刷子移动,例如鼠标移动.end- 在刷子手势的结尾,比如鼠标.
事件对象暴露出以下字段:
selection- 最新选择.xDomain- 指定选择所代表的x域.yDomain- 指定选择所代表的y域.
{\fn方正粗倩简体\fs12\an8\1cHFFFF00\b0} 刷头。 。 。 .十. 规模(单位:千美元)缩放(中文(简体) ) {\fn方正粗倩简体\fs12\an8\1cHFFFF00\b0} 刷头。 。 。 .比例(单位:千美元)缩放(中文(简体) )
若为 缩放 指定,设置比例并返回此刷子。 若为 缩放 未指定,返回当前比额表.
{\fn方正粗倩简体\fs12\an8\1cHFFFF00\b0} 刷头。 。 。 .过滤器(单位:千美元)[过滤(中文(简体) )
见d3-刷子 过滤器。 。 。 .
{\fn方正粗倩简体\fs12\an8\1cHFFFF00\b0} 刷头。 。 。 .手柄大小(单位:千美元)[大小](中文(简体) )
见d3-刷子 手柄大小。 。 。 .