@d3fc/d3fc-brush

中文文档
3.0.3发布于 2020/09/24MITESM + CJS近 30 天下载 6.2万

适应了D3刷子,更容易创建由数据驱动的刷子图.

中文使用文档
文档目录5 节
  1. 安装
  2. API 参考
  3. API 概况
  4. 创建导航图
  5. 笔刷

d3fc-笔刷

适应了D3刷子,更容易地创建出由数据驱动,反应快的刷子图.

主要 D3FC 软件包

安装

npm install @d3fc/d3fc-brush

API 参考

API 概况

D3fc-brush 组件将修改 d3-笔刷实现以下目标:

  1. D3fc-brush由数据驱动,由通过数据加合提供的数据确定刷子的位置. 这样可以更容易地创建具有响应性的图表(即支持再缩放),与其他交互式组件如缩放相融合,并创建具有一能性的图表渲染逻辑.
  2. D3fc-brush 曝光 xScale 财务报告和审定财务报表 yScale 属性,用于与 多号编 构成部分和 笛卡尔图 组件。 因此,根据每个轴的射程自动设定了刷子的范围.
  3. D3fc-刷子选择(定义了刷子范围),以百分比表示,而d3-刷子使用像素. 使用百分数选择可以更容易地调整刷图大小.
  4. 刷子事件暴露了根据当前选择计算轴域的公用功能,使得处理刷子事件和更新图表更加容易.

创建导航图

刷子的一个常见应用是创建两个相连接的图表,一个起到"导航"的作用,允许用户在某个特定数据区域上放大. 此示例的完整代码见 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-刷子 手柄大小。 。 。 .

版本与发布记录

@d3fc/d3fc-brush 共发布 95 个版本,首次发布于 2018/08/02;过去 12 个月发布了 0 个版本。

版本发布日期距今
3.0.3latest2020/09/246 年前
3.0.22020/09/166 年前
3.0.12020/07/146 年前
3.0.02020/04/166 年前
2.1.52020/04/026 年前
2.1.42020/03/266 年前

关于 @d3fc/d3fc-brush 的常见问题

@d3fc/d3fc-brush 是什么?

适应了D3刷子,更容易创建由数据驱动的刷子图.

如何安装 @d3fc/d3fc-brush?

在项目目录运行 npm install @d3fc/d3fc-brush,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:d3-brush(*)、d3-dispatch(*)、d3-scale(*)、d3-selection(*)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@d3fc/d3fc-brush 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/d3fc__d3fc-brush 是否存在。

@d3fc/d3fc-brush 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@d3fc/d3fc-brush 可以商用吗?

@d3fc/d3fc-brush 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@d3fc/d3fc-brush 的下载量有多少?

根据 npm 官方下载统计,@d3fc/d3fc-brush 在 2026/10/11 – 2026/11/09 这 30 天内被下载 61,555 次,日均约 2,052 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@d3fc/d3fc-brush 还在维护吗?

最新版本 3.0.3 发布于 2020/09/24(6 年前);至今共发布 95 个版本,其中过去 12 个月发布了 0 个;首次发布于 2018/08/02。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。