Build data reception with Google Chart API

17 Views Asked by At

I would like please build data reception with Google Chart API. if anyone has more skills to help me to build with the extract JSON data. The goal is to obtain a chart stacked in image. My code is attached. After several tries I still can't build the viewColumns . If anyone could check everything and show me the right path I would be very happy.

Thank you so much!!

my code

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://www.gstatic.com/charts/loader.js"></script>
    <div id="chart"></div>
    
    <script type="text/javascript">
    google.charts.load('current', { callback: drawMonthwiseChart, packages: ['corechart']});
    function drawMonthwiseChart()
    {
    
      var jsonData = {
        "TV":{"Madar":50.0,"La Main":34.0,"Saba":31.0,"Persavon":34.0,"Le Chat":55.0,"Ariel":67.0,"Super Croix":32.0,"Omo":77.0,"Armonia":42.0,"Genie":34.0},
        "Radio":{"Madar":10.0,"La Main":6.0,"Saba":9.0,"Persavon":6.0,"Le Chat":10.0,"Ariel":10.0,"Super Croix":6.0,"Omo":23.0,"Armonia":3.0,"Genie":8.0},
        "Billboard":{"Madar":2.0,"La Main":2.0,"Saba":2.0,"Persavon":3.0,"Le Chat":4.0,"Ariel":3.0,"Super Croix":2.0,"Omo":6.0,"Armonia":5.0,"Genie":4.0},
        "Print":{"Madar":2.0,"La Main":1.0,"Saba":3.0,"Persavon":3.0,"Le Chat":3.0,"Ariel":4.0,"Super Croix":4.0,"Omo":6.0,"Armonia":5.0,"Genie":3.0},
        "Social Media":{"Madar":22.0,"La Main":19.0,"Saba":19.0,"Persavon":16.0,"Le Chat":21.0,"Ariel":19.0,"Super Croix":16.0,"Omo":33.0,"Armonia":19.0,"Genie":16.0},
        "Website":{"Madar":9.0,"La Main":6.0,"Saba":7.0,"Persavon":8.0,"Le Chat":4.0,"Ariel":8.0,"Super Croix":5.0,"Omo":11.0,"Armonia":6.0,"Genie":8.0}
      }
    
    
        var chartData = [];
        Object.values(jsonData).forEach(function(row, rowIndex) {
          var columns = Object.keys(row);
          if (rowIndex === 0) {
           chartData.push(columns);
      
         }
    
            // row values
            var chartRow = [];
            columns.forEach(function (column, colIndex) {
              var chartCell = row[column];
              if (colIndex > 1) {
                chartCell = parseFloat(chartCell);
              }
              chartRow.push(chartCell);
            });
            chartData.push(chartRow);
    
           })
    
      
        var data = google.visualization.arrayToDataTable(chartData);
        var view = new google.visualization.DataView(data);
    
        var viewColumns = [0];
    
          Object.entries(jsonData).forEach(function(category, index) {
          console.log(category[0]);
          viewColumns.push({
            calc: function (dt, row) {
              if (dt.getValue(row, 1) === category) {
                return dt.getValue(row, 2);
              }
              return null;
            },
            label: category[0],
            type: 'number'
    
          });
    
          });
    
    
        view.setColumns(viewColumns);
    
        var options = {
          title:'',
          hAxis: {
              title: ''
          },
          vAxis: {
              title: ''
          },
          chartArea:{width:'65%' ,height:'95%'},
          isStacked: true
      }
    
        var chart = new google.visualization.BarChart(document.getElementById('chart'));
        chart.draw(view, options);
      }
    
    
    </script>


The expected result

chart i expected

0

There are 0 best solutions below