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)
    ;