- DC.js 教程
- DC.js - 主页
- DC.js - 简介
- DC.js - 安装
- DC.js - 概念
- 交叉过滤器简介
- D3.js 简介
- DC.js - 混合
- DC.js-baseMixin
- DC.js - capMixin
- DC.js - colorMixin
- DC.js - marginMixin
- DC.js -坐标GridMixin
- DC.js - 饼图
- DC.js - 折线图
- DC.js - 条形图
- DC.js - 综合图表
- DC.js - 系列图表
- DC.js - 散点图
- DC.js - 气泡图
- DC.js - 热图
- DC.js - 数据计数
- DC.js - 数据表
- DC.js - 数据网格
- DC.js - 图例
- DC.js - 仪表板工作示例
- DC.js 有用资源
- DC.js - 快速指南
- DC.js - 有用的资源
- DC.js - 讨论
DC.js-baseMixin
baseMixin提供了创建任何类型的图表所需的基本方法。其范围从设置图表的宽度到图表的高级过滤。
一般图表选项
basicMixin提供了许多图表方法来获取/设置图表的属性。它们如下:
ChartID() - 返回图表的内部数字 ID。
ChartGroup( [chartGroup]) - 获取或设置图表所属的组。在 DC.js 中,图表可以分为一组。组中的所有图表都应共享相同的 Crossfilter 数据集。它们同时渲染和重绘。
mychart.chartGroup('dashboard');
minWidth( [minWidth]) - 设置图表的最小宽度。
mychart.minWidth(300);
width( [width]) - 获取或设置图表的宽度。
mychart.width(600);
minHeight( [minHeight]) - 获取或设置图表的最小高度。
mychart.minHeight(300);
height( [height]) - 获取或设置图表的高度。
mychart.height(300);
title( [titleFunction]) - 获取或设置标题函数。标题是图表中子元素的 SVG 元素标题(例如条形图中的单个条形)。图表中的标题在浏览器中表示为工具提示。
mychart.title(function(data) { return d.key + ': ' + d.value; });
label( labelFunction[??]) - 与 title() 方法类似,但它设置标签而不是标题。
mychart.label(function(data) { return d.key + ': ' + d.value; });
options(opts) - 使用 JavaScript 对象设置任何图表选项。每个键代表图表中可用的相应方法,并且将使用相关值调用匹配的方法。
mychart.options ({ 'width' : 300, 'height' : 300 });
这里, width() 和 height() 方法将使用指定的值被触发。
legend( [legend]) - 将图例附加到图表。图例可以使用d3.legend()方法创建。
mychart.legend ( dc.legend() .x(500) .y(50) .itemHeight(12) .gap(4))
anchor(parent[??]) - 将根 SVGElement 设置为现有图表的根或任何有效的 D3 单个选择器。或者,也可以使用第二个参数设置图表组。
anchorName() - 获取图表锚定位置的 DOM ID。
svg( [svgElement]) - 返回图表的 SVGElement。
resetSvg() - 重置 DOM 中的 SVG 容器。
root( [rootElement]) - 获取图表的根容器。
数据选项
basicMixin提供了设置图表数据的方法。数据设置为 Crossfilter 维度和组。此外,它还提供了获取底层数据集的选项。
Dimension([dimension]) - 设置或获取图表的尺寸。维度是任何有效的 Crossfilter 维度。
var mycrossfilter = crossfilter([]); var ageDimension = mycrossfilter.dimension(dc.pluck('age')); mychart.dimension(ageDimension);
group(group[??]) - 设置或获取图表的组。组是任何有效的 Crossfilter 组。可以使用第二个参数来命名该组,以便稍后在代码中使用它。
var mycrossfilter = crossfilter([]); var ageDimension = mycrossfilter.dimension(dc.pluck('age')); mychart.dimension(ageDimension); mychart.group(ageDimension.group(crossfilter.reduceCount()));
data( [callback]) - 设置数据回调并使我们能够获取基础图表的数据集。
// get all groups mychart.data(function (group) { return group.all(); }); // get top five groups mychart.data(function (group) { return group.top(5); });
keyAccessor( [keyAccessor]) - 获取或设置按键访问器函数。它用于从底层 Crossfilter 组检索密钥。该键用于饼图中的切片和折线/条形图中的 x 轴。默认的按键访问器功能如下 -
chart.keyAccessor(function(d) { return d.key; });
valueAccessor( [valueAccessor]) - 获取或设置值访问器函数。它用于从基础 Crossfilter 组中检索值。该值用于饼图中的切片大小和折线/条形图中的 y 轴位置。默认值访问器函数如下 -
chart.valueAccessor(function(d) { return d.value; });
ordering( [orderFunction]) - 获取或设置排序函数以对序数维度进行排序。默认情况下,图表使用crossfilter.quicksort.by对元素进行排序。
_chart.ordering(dc.pluck('key'));
过滤器选项
过滤是 DC.js 的亮点之一。我们可以使用filter()方法直接在图表对象上应用一个或多个过滤器,并调用图表的redrawGroup()或dc.redrawAll()方法来查看图表上的过滤效果。默认情况下,图表对象使用 filter() 方法获取一个或多个过滤器,将其应用于基础 Crossfilter() 数据集,从 Crossfilter 获取过滤后的数据,并使用过滤后的数据重新绘制图表。DC.js 提供了以下方法来处理图表中的过滤。
过滤器([过滤器])
获取或设置图表的过滤器。如果提供的过滤器是新的,那么它将被添加到图表的过滤器集合中并应用于基础数据集。如果提供的过滤器已在图表的过滤器集合中可用,则它将删除该过滤器并对基础数据进行相关过滤。简而言之,过滤器方法将切换提供的过滤器。
mychart.filter(10);
要删除所有过滤器,请使用空值调用过滤器方法。过滤器可以是以下任何一项 -
null - 图表将删除之前应用的所有过滤器。
单值- 图表将调用底层 Crossfilter 的过滤方法并发送提供的值。
dc.filters.RangedFilter - 它接受两个值,低和高。图表将过滤掉所有数据,除了低值和高值之间的值。
dc.filters.TwoDimensionalFilter - 它接受热图中使用的二维值。
dc.filters.RangedTwoDimensionalFilter - 它类似于 dc.filters.RangedFilter,只是它接受仅在散点图中使用的二维值。
有过滤器([过滤器])
检查图表中提供的过滤器是否可用。
替换过滤器([过滤器])
用提供的过滤器替换图表的当前过滤器。
过滤器()
返回与图表关联的所有当前过滤器。
过滤全部()
清除与图表关联的所有过滤器。
过滤处理程序([过滤处理程序])
获取或设置过滤处理函数。图表使用过滤处理函数来使用过滤器过滤底层数据集。图表具有默认过滤器处理程序函数,可以使用此方法将其替换为自定义过滤器处理程序函数。默认过滤器处理程序如下 -
chart.filterHandler(function (dimension, filters) { if (filters.length === 0) { // the empty case (no filtering) dimension.filter(null); } else if (filters.length === 1 && !filters[0].isFiltered) { // single value and not a function-based filter dimension.filterExact(filters[0]); } else if (filters.length === 1 && filters[0].filterType === 'RangedFilter') { // single range-based filter dimension.filterRange(filters[0]); } else { // an array of values, or an array of filter objects dimension.filterFunction(function (d) { for (var i = 0; i < filters.length; i++) { var filter = filters[i]; if (filter.isFiltered && filter.isFiltered(d)) { return true; } else if (filter <= d && filter >= d) { return true; } } return false; }); } return filters; });
hasFilterHandler([hasFilterHandler])
获取或设置 has-filter 处理程序函数。图表使用此函数来检查图表的过滤器集合中是否有可用的过滤器。默认的 has-filter 处理程序如下 -
chart.hasFilterHandler(function (filters, filter) { if (filter === null || typeof(filter) === 'undefined') { return filters.length > 0; } return filters.some(function (f) { return filter <= f && filter >= f; }); });
addFilterHandler([addFilterHandler])
获取或设置添加过滤器处理函数。图表使用此函数将过滤器添加到图表的过滤器集合中。默认的添加过滤器处理程序如下 -
chart.addFilterHandler(function (filters, filter) { filters.push(filter); return filters; });
删除过滤器处理程序([删除过滤器处理程序])
获取或设置删除过滤器处理函数。图表使用此函数从图表的过滤器集合中删除过滤器。默认的删除过滤器如下 -
chart.removeFilterHandler(function (filters, filter) { for (var i = 0; i < filters.length; i++) { if (filters[i] <= filter && filters[i] >= filter) { filters.splice(i, 1); break; } } return filters; });
重置过滤器处理程序([重置过滤器处理程序])
获取或设置重置过滤器处理函数。图表使用此函数来重置图表的过滤器集合。默认重置过滤器如下 -
function (filters) { return []; }
过滤打印机([过滤打印机函数])
获取或设置打印机过滤器函数。该函数用于图表打印过滤器信息。
提交处理程序()
获取或设置提交处理程序。提交处理程序的目的是将过滤后的数据异步发送到服务器。
活动选项
DC.js 定义了一组有限的事件来执行某些功能,例如过滤、缩放等。DC.js 中定义的事件列表如下 -
renderlet - 在重新绘制和渲染过渡后触发。
pretransition - 在转换开始之前触发。
preRender - 在图表渲染之前触发。
postRender - 图表完成渲染(包括所有 renderlet 的逻辑)后触发。
preRedraw - 在图表重绘之前触发。
postRedraw - 图表完成重绘(包括所有 renderlet 的逻辑)后触发。
Filtered - 应用、添加或删除过滤器后触发。
Zoomed - 触发缩放后触发。
basicMixin提供了一个方法on(event,listener)来为上面定义的所有事件设置回调函数。
on(event,listener) - 设置特定事件的回调或侦听器函数。
onClick(datum) - 它被传递到 D3 作为每个图表的 onClick 处理程序。默认Behave是过滤单击的数据(传递给回调)并重新绘制图表组。
渲染选项
basicMixin 提供了渲染图表的方法列表。它们用于绘制图表,如下 -
render() - 渲染图表。一般情况下,绘制图表时会首先使用它。
renderGroup() - 渲染该图表所属组中的所有图表。
renderLabel( [renderLabel]) - 打开/关闭标签渲染。
renderTitle( [renderTitle]) - 打开/关闭标题渲染。
redraw() - 重绘整个图表。
redrawGroup() - 重新绘制该图表所属组中的所有图表。
过渡选项
basicMixin 提供了设置图表过渡效果的方法,它们如下:
transitionDelay( [delay]) - 设置或获取此图表实例的动画转换延迟(以毫秒为单位)。
transitionDuration( [duration]) - 设置或获取此图表实例的动画过渡持续时间(以毫秒为单位)。
useViewBoxResizing( [useViewBoxResizing]) - 如果设置,则根据 SVG 视图框属性调整图表大小。
controlsUseVisibility( [controlsUseVisibility]) - 如果设置,则使用可见性属性而不是显示属性来显示/隐藏图表重置和过滤控件。
在下一章中,我们将了解 capMixin。