【问题标题】:canvasJS chart not rendering properlycanvasJS 图表未正确呈现
【发布时间】:2015-09-13 18:10:31
【问题描述】:

我正在尝试使用canvasJS 制作render 多折线图,但它没有按预期工作。

这是我的drawChart函数

function drawChart(obj, placeholder){
var dataPoints = [];
var maxPrice = [];
var minPrice = [];
//console.info(obj);
for (var i = obj.length - 1; i >= 0; i--) {
    dataPoints.push({label:obj[i].year+"-"+obj[i].month+"-"+obj[i].day,y:Math.round(obj[i].avgPrice * 1000) / 1000});
    minPrice.push({label:obj[i].year+"-"+obj[i].month+"-"+obj[i].day,y:obj[i].minPrice});
    maxPrice.push({label:obj[i].year+"-"+obj[i].month+"-"+obj[i].day,y:obj[i].maxPrice});
}
console.log(dataPoints);
console.log(maxPrice);
console.log(minPrice);
var chart = new CanvasJS.Chart("chartContainer",
{
    animationEnabled: true,
    //theme: "theme1",
    zoomEnabled: true,
    title:{
        text: placeholder
    },
    data: [
        {
            type: "spline",  //change type to bar, line, area, pie, etc
            showInLegend: true,
            legendText: "Average Price", 
            dataPoints: dataPoints    //this line I tried to change
        },
        {
            type: "spline",  
            showInLegend: true,
            legendText: "Min Price", 
            dataPoints: minPrice
        },
        {
            type: "spline",  
            showInLegend: true,
            legendText: "Max Price", 
            dataPoints: maxPrice
        }
    ],
    legend: {
        cursor: "pointer",
        itemclick: function (e) {
            if (typeof(e.dataSeries.visible) === "undefined" || e.dataSeries.visible) {
                e.dataSeries.visible = false;
            } else {
                e.dataSeries.visible = true;
        }
        chart.render();
        }
    }
});

chart.render();

}

var dataPoints, maxPrice, minPrice 具有相同的布局/数据。

看这里。

这样显示图表,两条线minPrice and maxPrice的重置消失了。

PS如果我将dataPoints: dataPoints 更改为dataPoints: min/maxPrice,它也不起作用。

【问题讨论】:

    标签: javascript jquery charts canvasjs


    【解决方案1】:

    我得到了解决方案,我正在发布它可能对其他人有所帮助。

    我怀疑如果您尝试动态渲染图表,那么对于y-axis,您需要使用Math 函数才能使其工作。

    所以我改变了这些

    dataPoints.push({label:obj[i].year+"-"+obj[i].month+"-"+obj[i].day,y:Math.round(obj[i].avgPrice * 1000) / 1000});
    minPrice.push({label:obj[i].year+"-"+obj[i].month+"-"+obj[i].day,y:obj[i].minPrice});
    maxPrice.push({label:obj[i].year+"-"+obj[i].month+"-"+obj[i].day,y:obj[i].maxPrice});
    

    收件人

    dataPoints.push({label:obj[i].year+"-"+obj[i].month+"-"+obj[i].day,y:Math.round(obj[i].avgPrice * 1000) / 1000});
    minPrice.push({label:obj[i].year+"-"+obj[i].month+"-"+obj[i].day,y:Math.round(obj[i].minPrice * 1000) / 1000});
    maxPrice.push({label:obj[i].year+"-"+obj[i].month+"-"+obj[i].day,y:Math.round(obj[i].maxPrice * 1000) / 1000});
    

    现在它工作正常,这可能是canvasjs 中的一个错误,或者可能是我在某个地方搞砸了。

    看这里

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-09
      • 2015-10-04
      • 2013-11-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多