dc.js barCharts 中 .x() 的问题
Problems with .x() in dc.js barCharts
我正在使用 dc.js 进行我的第一个交互式可视化。我在 dc.barChart() 属性上遇到了困难,我无法在 google 上找到答案。我将从 crossfilter()
函数开始编写代码。我能够创建 dc.rowCharts() 所以我非常怀疑它是一个格式错误的 .json 问题
var ndx = crossfilter(salgsTransaksjonene);
//Define Dimensions
var kundeDim = ndx.dimension(function(d) { return d["CustomerName"]; });
//Calculate metrics
var OmsetningKunder = kundeDim.group().reduceSum(function(fact) { return fact.TotalAmount;});
//Charts
var toppChart = dc.barChart("#topp-20-bar-chart");
toppChart
.width(950)
.height(240)
.margins({top: 10, right: 50, bottom: 30, left: 50})
.dimension(kundeDim)
.group(topp20OmsetningKunder)
.transitionDuration(500)
.elasticY(true)
.yAxis().ticks(4)
关于 .x() 属性,我尝试了以下方法
// .isOrdinal(true)
// .xUnitCount(20)
.xUnits(dc.units.ordinal.domain(salgsTransaksjonene.map(function (d) {return d.CustomerName; })))
.x(d3.scale.ordinal());
// .isOrdinal(true)
// .xUnitCount(20)
.xUnits(dc.units.ordinal)
.x(d3.scale.ordinal());
我得到的错误大多是相同的; Uncaught TypeError: undefined is not a function
以及上述属性的各种组合,但都无济于事。非常感谢任何关于可能出错的想法!
像这样尝试使用您的序号值添加一个 .domain。
我还看到声明的顺序很重要。
.x(d3.scale.ordinal().domain(['cat1','cat2','cat3']))
.xUnits(dc.units.ordinal)
这是一个完整的工作条形图,可以激发您的灵感。
chart11
.width(xxx)
.height(xxx)
.margins(xxx)
.dimension(xxx)
.group(xxx)
.x(d3.scale.ordinal().domain([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]))
.xUnits(dc.units.ordinal)
.centerBar(false)
.transitionDuration(transitionDuration)
.elasticY(true)
.gap(1)
.renderHorizontalGridLines(true)
.yAxis().ticks(2)
;
我正在使用 dc.js 进行我的第一个交互式可视化。我在 dc.barChart() 属性上遇到了困难,我无法在 google 上找到答案。我将从 crossfilter()
函数开始编写代码。我能够创建 dc.rowCharts() 所以我非常怀疑它是一个格式错误的 .json 问题
var ndx = crossfilter(salgsTransaksjonene);
//Define Dimensions
var kundeDim = ndx.dimension(function(d) { return d["CustomerName"]; });
//Calculate metrics
var OmsetningKunder = kundeDim.group().reduceSum(function(fact) { return fact.TotalAmount;});
//Charts
var toppChart = dc.barChart("#topp-20-bar-chart");
toppChart
.width(950)
.height(240)
.margins({top: 10, right: 50, bottom: 30, left: 50})
.dimension(kundeDim)
.group(topp20OmsetningKunder)
.transitionDuration(500)
.elasticY(true)
.yAxis().ticks(4)
关于 .x() 属性,我尝试了以下方法
// .isOrdinal(true)
// .xUnitCount(20)
.xUnits(dc.units.ordinal.domain(salgsTransaksjonene.map(function (d) {return d.CustomerName; })))
.x(d3.scale.ordinal());
// .isOrdinal(true)
// .xUnitCount(20)
.xUnits(dc.units.ordinal)
.x(d3.scale.ordinal());
我得到的错误大多是相同的; Uncaught TypeError: undefined is not a function
以及上述属性的各种组合,但都无济于事。非常感谢任何关于可能出错的想法!
像这样尝试使用您的序号值添加一个 .domain。 我还看到声明的顺序很重要。
.x(d3.scale.ordinal().domain(['cat1','cat2','cat3']))
.xUnits(dc.units.ordinal)
这是一个完整的工作条形图,可以激发您的灵感。
chart11
.width(xxx)
.height(xxx)
.margins(xxx)
.dimension(xxx)
.group(xxx)
.x(d3.scale.ordinal().domain([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]))
.xUnits(dc.units.ordinal)
.centerBar(false)
.transitionDuration(transitionDuration)
.elasticY(true)
.gap(1)
.renderHorizontalGridLines(true)
.yAxis().ticks(2)
;