2016-10-17 6 views
0

Привет всем Я пытаюсь построить столбчатую с помощью canvasJS для следующих вложенного списка:Линейчатая участок Использование JavaScript

pepidstat=[[[2016, 61, 'Feb'], [2011, 367, 'Feb'], [2013, 83, 'Feb'], [2014, 89, 'Feb'], [2015, 106, 'Feb']], [[2016, 43, 'Jan'], [2011, 128, 'Jan'], [2013, 150, 'Jan'], [2014, 74, 'Jan'], [2015, 121, 'Jan']]] 

И мой работоспособный JavaScript является:

<script type="text/javascript"> 
    window.onload = function() { 
    var chartbar = new CanvasJS.Chart("chartContainerBar", 
    { 
     title:{ 
     text: "Yearly Growth of Total Peptides" 
     }, 
     animationEnabled: true, 
     axisX: { 
    interval: 1, 
    labelFontSize: 10, 
    lineThickness: 0 
     }, 

     data:pepiddata 
    }); 

    chartbar.render(); 
    chartbar={}; 
    } 
    var pepidstatlist = {{ pepidstat|safe }}; 
    var pepiddata = [];var pepiddataSeries = { type: "stackedBar",showInLegend: "true" }; 
    var pepidname= []; 
    var pepiddataPoints = []; 
    for (pi = 0; pi < pepidstatlist.length;pi++) { 
    piname = pepidstatlist[pi][0][2]; 
    for (pj = 0; pj < pepidstatlist[pi].length;pj++) { 
     pidx=pepidstatlist[pi][pj][0]; 
     pidy=pepidstatlist[pi][pj][1]; 
     pepiddataPoints.push({ 
    x:pidx,  
    y: pidy, 
    label: pidx, 
    name:piname, 
    toolTipContent: "{name}-{label}:{y}", 
     }); 
    } 
    pepiddataSeries.name = piname; // here I want pass each month name 

    } 
    pepiddataSeries.dataPoints = pepiddataPoints; 
    pepiddata.push(pepiddataSeries); 
    </script> 

Этот скрипт работает прекрасно, за исключением Я не могу назначить имя каждого месяца в серии данных. Можете ли вы предложить, где мне нужно изменить мой сценарий? Thanks

+0

Что безопасно в ** var pepidstatlist = {{pepidstat | safe}}; **? – Beevk

ответ

4

Вы просто создаете единую базу данных. Создайте две dataSeries и нажмите на данные. И все остальное просто отлично работает.


 
pepidstat=[[[2011, 61, 'Feb'], [2012, 367, 'Feb'], [2013, 83, 'Feb'], [2014, 89, 'Feb'], [2015, 106, 'Feb']], [[2011, 43, 'Jan'], [2012, 128, 'Jan'], [2013, 150, 'Jan'], [2014, 74, 'Jan'], [2015, 121, 'Jan']]] 
 

 
var pepidstatlist = pepidstat; 
 
var pepiddata = []; 
 
var pepidname= []; 
 

 
for (pi = 0; pi < pepidstatlist.length;pi++) { 
 
\t piname = pepidstatlist[pi][0][2]; //month 
 
    var pepiddataPoints = []; 
 
\t for (pj = 0; pj < pepidstatlist[pi].length;pj++) { 
 
\t \t pidx=pepidstatlist[pi][pj][0]; //Year 
 
\t \t pidy=pepidstatlist[pi][pj][1]; //value 
 
\t \t pepiddataPoints.push({ 
 
    \t x:pidx,  
 
    \t y: pidy, 
 
    \t label: pidx, 
 
    \t name:piname, 
 
    \t toolTipContent: "{name}-{label}:{y}", 
 
\t \t }); 
 
\t } 
 
    var pepiddataSeries = { type: "stackedBar", showInLegend: "true" }; 
 
\t pepiddataSeries.name = piname; // here I want pass each month name 
 
\t pepiddataSeries.dataPoints = pepiddataPoints; 
 
\t pepiddata.push(pepiddataSeries); 
 
} 
 

 
var chartbar = new CanvasJS.Chart("chartContainer", 
 
{ 
 
\t title:{ 
 
\t \t text: "Yearly Growth of Total Peptides" 
 
\t }, 
 
\t animationEnabled: true, 
 
\t axisX: { 
 
\t \t interval: 1, 
 
\t \t labelFontSize: 10, 
 
\t \t lineThickness: 0 
 
\t }, 
 
\t data: pepiddata, 
 
}); 
 

 
chartbar.render();
<script src="http://canvasjs.com/assets/script/canvasjs.min.js"></script> 
 
<br/><!-- Just so that JSFiddle's Result label doesn't overlap the Chart --> 
 
<div id="chartContainer" style="height: 360px; width: 100%;"></div>

Советы: Сортируйте массив основан на год значения внутри вашего массива.

+0

Спасибо :), что решил мою проблему. – Paul85