How to use a csv file with the google chart API?

試著忘記壹切 提交于 2020-01-30 08:30:06

问题


I have a csv file with that :

Site,Janvier,Février,Mars,Avril,Mai,Juin,Juillet,Août,Septembre,Octobre,Novembre,Décembre CITROEN VILLEFRANCHE CARROSSERIE,0,0,14,0,18,21,0,0,0,0,0,0 CITROEN VILLEFRANCHE ,240,237,230,264,219,285,219,130,4,0,0,0 NISSAN VILLEFRANCHE ,174,202,215,181,196,244,203,107,10,1,0,0

I would like to see its data in a column chart.

But i do not know how to read the data of a csv with the API. Here is an example of a column chart with the API :

google.charts.load("current", {packages:['corechart']});
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
  var data = google.visualization.arrayToDataTable([
    ["Element", "Density", { role: "style" } ],
    ["Copper", 8.94, "#b87333"],
    ["Silver", 10.49, "silver"],
    ["Gold", 19.30, "gold"],
    ["Platinum", 21.45, "color: #e5e4e2"]
  ]);

  var view = new google.visualization.DataView(data);
  view.setColumns([0, 1,
                   { calc: "stringify",
                     sourceColumn: 1,
                     type: "string",
                     role: "annotation" },
                   2]);

  var options = {
    title: "Density of Precious Metals, in g/cm^3",
    width: 600,
    height: 400,
    bar: {groupWidth: "95%"},
    legend: { position: "none" },
  };
  var chart = new google.visualization.ColumnChart(document.getElementById("columnchart_values"));
  chart.draw(view, options);

How to change the data load to use a csv file ?


回答1:


you can use jquery.csv to parse the csv

google.charts.load('current', {
  callback: function () {
    $.get("file_name.csv", function(csvString) {
      var arrayData = $.csv.toArrays(csvString, {onParseValue: $.csv.hooks.castToScalar});

      var data = new google.visualization.arrayToDataTable(arrayData);

      var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
      chart.draw(data);
    });
  },
  packages: ['corechart']
});

see following working snippet with static data

google.charts.load('current', {
  callback: function () {
    csvString = 'Site,Janvier,Février,Mars,Avril,Mai,Juin,Juillet,Août,Septembre,Octobre,Novembre,Décembre\nCITROEN VILLEFRANCHE CARROSSERIE,0,0,14,0,18,21,0,0,0,0,0,0\nCITROEN VILLEFRANCHE ,240,237,230,264,219,285,219,130,4,0,0,0\nNISSAN VILLEFRANCHE ,174,202,215,181,196,244,203,107,10,1,0,0';

    var arrayData = $.csv.toArrays(csvString, {onParseValue: $.csv.hooks.castToScalar});

    var data = new google.visualization.arrayToDataTable(arrayData);
    
    var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
    chart.draw(data);
  },
  packages: ['corechart']
});
<script src="https://www.gstatic.com/charts/loader.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-csv/0.71/jquery.csv-0.71.min.js"></script>
<div id="chart_div"></div>



回答2:


webpack is provided great utilits for module managment. Include asset management, you could use csv-loader to import your csv and parse.

webpack.config.js

var path = require('path');

module.exports = {
  entry: './src/yourscript.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: '[name].bundle.js'
  },
  module: {
    rules: [
      {
        test: /\.css$/,
        use: ['style-loader', 'css-loader']
      }, 
       {
        test: /\.(csv|tsv)$/,
        use: [
          'csv-loader'
        ]
      },
      ]
  }
};

If you are first time in webpack .

  • $ sudo npm install -g webpack
  • $ npm install webpack --save-dev
  • $ cat>webpack.config.js
  • $ npm install style-loader css-loader csv-loader --save-dev
  • copy the code and paste into the webpack.config.js
  • $ webpack

/src/yourscript.js

import data form "./asset/yourcsv.csv";

component = ()=>{
  console.log(data);
}


来源:https://stackoverflow.com/questions/44888900/how-to-use-a-csv-file-with-the-google-chart-api

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!