2015-09-23 3 views
0

Я пытаюсь передавать данные в amCharts динамически, но данные, не представленные в диаграмме. Кодовый блок ниже, и это простой:Передача динамических данных amCharts

<script> 

var chartData = generateChartData(); 

var chart = AmCharts.makeChart("testDiv", { 
    "type": "serial", 
    "theme": "light", 
    dataSets: [{ 
     fieldMappings: [{ 
      fromField: "country", 
      toField: "country" 
     }, { 
      fromField: "visits", 
      toField: "visits" 
     }], 

    "dataProvider": chartData, 
    "valueAxes": [{ 
     "gridColor": "#FFFFFF", 
     "gridAlpha": 0.2, 
     "dashLength": 0 
    }], 
    "gridAboveGraphs": true, 
    "startDuration": 1, 
    "graphs": [{ 
     "balloonText": "[[category]]: <b>[[value]]</b>", 
     "fillAlphas": 0.8, 
     "lineAlpha": 0.2, 
     "type": "column", 
     "valueField": "visits" 
    }], 
    "chartCursor": { 
     "categoryBalloonEnabled": false, 
     "cursorAlpha": 0, 
     "zoomable": false 
    }, 
    "categoryField": "country", 
    "categoryAxis": { 
     "gridPosition": "start", 
     "gridAlpha": 0, 
     "tickPosition": "start", 
     "tickLength": 20 
    }, 
    "export": { 
     "enabled": true 
    } 

}); 



function generateChartData() { 

for (var i = 0; i < 3 ; i++) { 
    var chartData = []; 
    /* 
    var a = versionList[i]; 
    var b = countOfVersion[i]; 
    */ 
    chartData.push({ 
     country: "Canb", 
     visits:1 
    }); 
} 
return chartData; 
} 
</script> 

<div id="testDiv"></div> 

Как я могу передать данные на график? У меня есть метод с именем generateChartData, и этот метод создает данные, которые будут использоваться в диаграмме.

ответ

1

Причина, почему этот график не показывает ничего, что вы сбрасываете chartData массива на каждой итерации цикла для:

var chartData = []; 

Это приводит к данным только с одной точки данных. Поскольку ваш линейный график не имеет никаких пуль, вы ничего не видите. (Нет линии рисовать beteem одну точку данных)

Попробуйте изменить эту функцию следующим образом:

function generateChartData() { 
    var chartData = []; 
    for (var i = 0; i < 3; i++) { 
    /* 
    var a = versionList[i]; 
    var b = countOfVersion[i]; 
    */ 
    chartData.push({ 
     country: "Canb", 
     visits: 1 
    }); 
    } 
    return chartData; 
} 

На связанной ноте, dataSets блок у вас есть используется только Биржевая диаграмма и игнорируется в последовательной диаграмма. Вы можете просто удалить весь блок, так как это никак не повлияет на график.