2017-02-10 16 views
1

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

Это то, что моя диаграмма выглядела как раньше.

enter image description here

И это после того, как я реализовал среднюю линию, моя другая линия исчезла.

enter image description here

Я не знаю, как сделать, чтобы сделать их как шоу?

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

chart.draw(dv, options); 

Вот код.

<script> 
    google.charts.load('current', { 
     'packages': ['corechart'] 
    }); 
    google.charts.setOnLoadCallback(drawVisualization); 


    function drawVisualization() { 
     var data = google.visualization.arrayToDataTable([ 
      ['Day', 'Repetitions', 'Sets'], 
      @foreach (var c in db.Query(Query, inputDate, endDate, baselift)) 
      { 
       var totAvg = c.avg; 
       var allReps = c.reps; 
       var realAvg = (totAvg/allReps) * 100; 

       //Writes out the data that will be shown in the chart. 
       <text>['@c.date', @c.reps, @c.sets],</text> 
      } 
     ]); 

      // Create a DataView that adds another column which is all the same (empty-string) to be able to aggregate on. 
      var viewWithKey = new google.visualization.DataView(data); 
        viewWithKey.setColumns([0, 1, { 
         type: 'string', 
         label: '', 
         calc: function (d, r) { 
          return '' 
         } 
        }]) 

        // Aggregate the previous view to calculate the average. This table should be a single table that looks like: 
        // [['', AVERAGE]], so you can get the Average with .getValue(0,1) 
        var group = google.visualization.data.group(viewWithKey, [2], [{ 
         column: 1, 
         id: 'avg', 
         label: 'Average', 
         aggregation: google.visualization.data.avg, 
         'type': 'number' 
        }]); 

        // Create a DataView where the third column is the average. 
        var dv = new google.visualization.DataView(data); 
        dv.setColumns([0, 1, { 
         type: 'number', 
         label: 'Average', 
         calc: function (dt, row) { 
          return group.getValue(0, 1); 
         } 
        }]); 

        var options = {        
         title: 'Daily Repetition Statistics', 
         backgroundColor: { fill: 'transparent' }, 
         explorer: { axis: 'horizontal' }, 
         vAxes: { 

          0: { logScale: false, viewWindow: { min: 0 } }, 
          1: { logScale: false, maxValue: 2 } 

         }, 
         hAxis: { title: 'Day' }, 
         seriesType: 'bars', 
         curveType: 'function', 
         series: { 
         0: { 
           targetAxisIndex: 0, 
           color: 'orange'          
          }, 
         1: { targetAxisIndex: 1 }, 
         1: { targetAxisIndex: 1, type: "line" }, 
         2: { targetAxisIndex: 1, type: "line" } 
        } 
       }; 

       var chart = new google.visualization.ComboChart(document.getElementById('chart_div')); 
       chart.draw(dv, options); 
       } 
      </script> 

ответ

1

индекс столбца для 'sets' не предоставляется setColumns

изменения этого ...

var dv = new google.visualization.DataView(data); 
dv.setColumns([0, 1, { 
    type: 'number', 
    label: 'Average', 
    calc: function (dt, row) { 
     return group.getValue(0, 1); 
    } 
}]); 

к ..

var dv = new google.visualization.DataView(data); 
dv.setColumns([0, 1, 2, { // <-- add 'sets' column index 2 
    type: 'number', 
    label: 'Average', 
    calc: function (dt, row) { 
     return group.getValue(0, 1); 
    } 
}]); 
+0

ой, я попытался изменить несколько номеров кое-где не зная дерьмо, что я делал, но не думал добавить его! Это сработало, спасибо вам большое! –

+1

ура! рад помочь, в любое время ... – WhiteHat