2012-02-16 4 views
1

Я пытаюсь создать Jqplot гистограмм и сталкиваются с трудностями при создании многомерного массива в подобноммногомерный массив для jqplot диаграммы

var plot2 = $.jqplot('chart2', [ 
    [[2,1], [4,2], [6,3], [3,4]], 
    [[5,1], [1,2], [3,3], [4,4]], 
    [[4,1], [7,2], [1,3], [2,4]]], 

Мои данные в HashMap внутри HashMap это как

{software={low=1,high=5, medium=4}, harware={low=3,high=3},network{low=3,high=3,medium=8}} 

Как я могу интерпретировать мои данные в вышеупомянутом многомерном массиве.

Я написал следующий код для достижения этой

$(document).ready(function(){ 
    <c:forEach var="data" varStatus="main" items="${data}"> 

    var cdata = new Array(); 

    var twoDOuterArray = new Array(${data.size()}); 

    <c:forEach var="mapEntry" varStatus="status" items="${data['cData']}"> 
     twoDOuterArray[${status.index}] = new Array(3); 
    </c:forEach> 

    <c:forEach var="mapEntry" varStatus="status" items="${data['cData']}"> 
    <c:forEach var="dataValue" varStatus="status2" items="${mapEntry.value}"> 
     var valueArray = new Array();   
     alueArray.push(${dataValue.value}); 
     valueArray.push("${mapEntry.key}"); 
     twoDOuterArray[${status2.index}][${status.index}]=valueArray; 
    </c:forEach> 
    //alert(twoDOuterArray[${status.index}].length); 
    </c:forEach> 



    data.push(twoDOuterArray); 

    alert(twoDOuterArray); 

    plot2b = $.jqplot('chart2', data, { 
     seriesDefaults: { 
      renderer:$.jqplot.BarRenderer, 
      pointLabels: { show: true, location: 'e', edgeTolerance: -15 }, 
      shadowAngle: 50, 
      rendererOptions: { 
       barDirection: 'horizontal' 
      } 
     }, 
     title:{ 
      text: "${title}",      
      show: true,    
      textColor:"#fff", 
     }, 
     axes: { 
      yaxis: { 
       renderer: $.jqplot.CategoryAxisRenderer 
      } 
     }, 
     legend: { show:true, location: 'e' } 
    }); 


    ); 

</c:forEach> 
}); 

Это кажется, что формат является правильным, но я не понимаю, где я не прав, или это правильный способ создания данных. если бы кто-нибудь мог помочь мне решить это, это было бы здорово.

Редактировать: Как я могу проверить, что мой массив создан в вышеуказанном формате?

ответ

2

Чтобы посмотреть, как выглядят ваши данные, я бы использовал Firebug (или ваш любимый браузер) для установки точки останова при вызове jqplot. Затем проверьте переменную, которую вы хотите проверить.

Также кажется, что jqplot должен использовать twoDOuterArray, но вы передаете его data, что может быть проблемой.

Еще одна вещь: если исходный объект данных содержит более одного элемента, внешний <c:forEach>, который у вас есть, приведет к созданию jqplot новых графиков на ранее сгенерированных.

Вместо того, чтобы смешивать JSTL с Javascript, я бы также предложил построить ваш 2d-массив из того места, где установлены другие ваши переменные (например, контроллер). Затем конвертируйте объект в JSON с библиотекой, например Gson, и передайте это прямо в jqplot.

Смежные вопросы