首页 文章

使用dc.js时.compose出错

提问于
浏览
0

我正在尝试使用dc.js创建2个折线图的组合 . 但我每次都会收到此错误:未捕获的TypeError:timeChart.width(...) . height(...) . x(...) . elasticY(...) . marginins(...) . dimension( . ..) . 撰写不是一个功能

这是一个时间序列,我想将netCommercialPosition和netCommercialPosition绘制为两个单独的行 . 当我堆叠它们时它可以工作,但是当我想要使用.compose时它不工作 .

我跟随了几个例子,例如:Dual Y axis line chart in dc.js http://dc-js.github.io/dc.js/examples/series.html

所以希望我正确使用.compose元素

我的数据集是一个具有以下结构的json:[{“CFTC_Commodity_Code”:1,“Net_Commmercial_Position”: - 113520,“Report_Date_as_MM_DD_YYYY”:“14/07/2015”,“Net_Fund_Position”: - 12246,“Price”:583.5 ,“Net_ Commmercial_Position”:3877,“},]

这是我的代码:

d3.json("/donorschoose/COT", function (error, dataset1){

var ymdFormat = d3.time.format("%d/%m/%Y");
dataset1.forEach(function(p) {
p.Report_Date_as_MM_DD_YYYY = ymdFormat.parse(p.Report_Date_as_MM_DD_YYYY);
});

var COTProjects = dataset1;
var ndx = crossfilter(COTProjects);
var all = ndx.groupAll();

FilterDimension = ndx.dimension(function (d) {
    return d.CFTC_Commodity_Code;
});


var dateDim = ndx.dimension(function(d) { return d.Report_Date_as_MM_DD_YYYY; });
var Prices = dateDim.group().reduceSum(function(d) {return d.Price; });
var netFundPosition = dateDim.group().reduceSum(function(d) {return   d.Net_Fund_Position; });
var netCommercialPosition = dateDim.group().reduceSum(function(d) {return d.Net_Commmercial_Position; });

var minDate = dateDim.bottom(1)[0]["Report_Date_as_MM_DD_YYYY"];
var maxDate = dateDim.top(1)[0]["Report_Date_as_MM_DD_YYYY"];

var timeChart = dc.lineChart("#time-chart");

actualValuesChart = dc.lineChart(timeChart)
    .group(netFundPosition)


normValuesChart = dc.lineChart(timeChart)
    .group(netCommercialPosition)


timeChart

        .width(650)
        .height(260) 
        .x(d3.time.scale().domain([minDate, maxDate]))
        .elasticY(true)
        .margins({top: 0, right: 5, bottom: 20, left: 40})
        .dimension(dateDim)
        .compose([actualValuesChart,normValuesChart])
        .transitionDuration(500)
        .yAxis().ticks(4);
        .brushOn(false)

FilterDimension.filter(1)       



dc.renderAll();

});

任何帮助赞赏

提前致谢

1 回答

  • 3

    我找到了解决方案,我的问题是我试图从lineChart对象而不是compositeChart对象调用compose() .

    dc.js-s doc

相关问题