Search code examples
phpjavascriptjqueryjsongoogle-visualization

Comma Separated Data in Google Visualisation API


I'm using GeoChart from the Google Visualisation API to create a dynamic map containing site usage information. Due to the large metric values (8 digits), I need to comma separate these numbers to make the map more readable. I've written a function that adds commas to these number, but this then causes errors with the API drawing the map.

For example, when comma separating 1 of the 3 columns of data (Country, Visits, Unique Visitors), the label for that column will be removed in the country tool tips. Comma separating 2 of the columns then leads to the entire map failing, with an 'Expecting 2 columns' error. This must be due to the commas in the number string not being escaped and therefore causing errors in the JSON array. I've tried inserting '\,' instead of a regular comma to no avail. Any work arounds or solutions?


Solution

  • Taking a step back I think the better way to solve the problem is to format your raw data using the NumberFormat class in google visualizations called google.visualization.NumberFormat. More info here: google.visualization.NumberFormat

    Here is an example of how to format the 2nd column to have commas as the grouping separator:

    function drawVisualization() {
      var data = google.visualization.arrayToDataTable([
        ['Country', 'Popularity'],
        ['Germany', 200],
        ['United States', 300],
        ['Brazil', 400],
        ['Canada', 500],
        ['France', 60000000000000000],
        ['RU', 700]
      ]);
    
      var formatter = new google.visualization.NumberFormat({pattern:'###,###'} );
      formatter.format(data, 1);
      
      var geochart = new google.visualization.GeoChart(
          document.getElementById('visualization'));
      geochart.draw(data, {width: 556, height: 347, tooltip: {textStyle: {color: 'blue', fontName: 'Tahoma', fontSize: '15'}}});
    }
    

    I used the google visualization playground to test it out.

    Update

    Modified the geochart.draw line to include tooltip text styling. It will style the all of the text in the tooltip. I haven't seen anyway to make fine grain customizations. Here is more info: Geochart Configuration Options