Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


advertisement
 

Upgrade Your Website with Google Charts

Learn how to make the most of Google Charts and customize charts for your website.


advertisement

With Google charts, displaying chart data on web pages has become very easy and stress-free. Many types of charts can be used, such as pie charts, line charts, histograms, scatter charts and many more. This web service is easily customizable and free. In this article, you will learn how to use to customize charts for your website.

Getting Started

The first step is to import the Charts API JavaScript:

<html>
<head>
   <script type="text/javascript" src="https://www.google.com/jsapi"></script>
   <script type="text/javascript">

      // Load the Visualization API
      google.load('visualization', '1.0', {'packages':['corechart']});

      // Set a callback to run when the Google Visualization API is loaded.
     // This callback function actually draws the chart
      google.setOnLoadCallback(drawChart);

      // Draw the chart
     // This is where chart logic is located
      function drawChart() {

      }
   </script>
</head>

<body>
   <!--div that will hold the chart-->
   <div id="chart_wrap"></div>
</body>
</html>


The code above loads the required JavaScript files and initializes the API and should be placed inside the head element in HTML document. You will notice the drawChart callback function — that function contains the code which actually creates the chart. Finally, the div is created in the HTML part of the code at the place where you want to show the chart.

Pie Chart

In order to create any of the charts, we need to prepare the data that will be shown on the website. Each chart is actually a visualization of a table with multiple rows and columns. So, the data would be added to the chart as a table using Google charts API predefined functions. If we take the following table for example:

Then the data would be added to the chart like this:

// Initialize DataTable object
var data = new google.visualization.DataTable();        

// Create two columns – Beverage and Sold
// String and number are column values’ data types        
data.addColumn('string', 'Beverage');
data.addColumn('number', 'Sold');

// Add rows
// Each line represents one row, where the first value is the first column’s value and the second value is the second column’s value        
data.addRows([
   ['Beer', 10],
   ['Wine', 5],
   ['Whiskey', 2],
   ['Juice', 7],
   ['Water', 6]
]); 

Next step is to set chart options:

// Set chart options
var options = {
'title': 'Today’s beverage sales',
                'width': 700,
                'height': 300
};

After that, we need to draw the chart and show it on the web page:

// Draw the chart
// Note that the data and options variables represent data and options set in the code above
// chart_wrap is the id of the div where the chart will be displayed
var chart = new google.visualization.PieChart(document.getElementById('chart_wrap'));
chart.draw(data, options); 

At this point, the chart is fully functioning and will be shown on the page. The complete code would look like this:

function drawChart() {

       // Add the data to the chart
       var data = new google.visualization.DataTable();        

      // Add columns
      data.addColumn('string', 'Beverage');
      data.addColumn('number', 'Sold');

     // Add rows
    data.addRows([
       ['Beer', 10],
       ['Wine', 5],
       ['Whiskey', 2],
       ['Juice', 7],
       ['Water', 6]
    ]);


    // Set chart options
    var options = {
'title': 'Today’s beverage sales',
                'width': 700,
                'height': 300
    };

    // Draw the chart
    var chart = new google.visualization.PieChart(document.getElementById('chart_wrap'));
    chart.draw(data, options);
}

The pie chart can have many additional options, such as creating a 3D chart, rotating it, creating a donut chart and many more. Check the list of all available options here.

Bar Chart

Creating a bar chart is very similar to creating a pie chart. Everything is the same, except the last two lines, which should be replaced with the following code:

var chart = new google.visualization.BarChart(document.getElementById('chart_wrap'));
chart.draw(data, options); 

Line Chart

Line chart is created by using the following drawChart function:

function drawChart() {
        // Add the data to the chart
        // First column are x axis values
        // Second column are blue line y axis values
        // Third column are red line y axis values

        var data = google.visualization.arrayToDataTable([
          ['Year', 'Profits', 'Expenses'],
          ['2004',  1000,      400],
          ['2005',  1170,      460],
          ['2006',  660,       1120],
          ['2007',  1030,      540]
        ]);

        // Set chart options
        var options = {
          title: 'Shop Performance'
        };

        // Draw the chart
        var chart = new google.visualization.LineChart(document.getElementById('chart_wrap'));
        chart.draw(data, options);
}

Loading Data from JSON

Chart data can also be loaded from an external URL, whose response should be formatted in JSON. In that case, the drawChart function will be slightly different:

function drawChart() {

      var jsonData = $.ajax({
          url: "http://www.example.com/beverage_sales.json",
          dataType:"json",
          async: false
 }).responseText;

       // Add the data to the chart
       var data = new google.visualization.DataTable(jsonData);        

    // Set chart options
    var options = {
'title': 'Today’s beverage sales',
                'width': 700,
                'height': 300
    };

    // Draw the chart
    var chart = new google.visualization.PieChart(document.getElementById('chart_wrap'));
    chart.draw(data, options);
}

This example uses the same data as the pie chart example above. The corresponding JSON file should look like this:

{
  "cols": [
        {"id":"","label":"Beverage","pattern":"","type":"string"},
        {"id":"","label":"Sold","pattern":"","type":"number"}
      ],
  "rows": [
        {"c":[{"v":"Beer","f":null},{"v":10,"f":null}]},
        {"c":[{"v":"Wine","f":null},{"v":5,"f":null}]},
        {"c":[{"v":"Whiskey","f":null},{"v":2,"f":null}]},
        {"c":[{"v":"Juice","f":null},{"v":7,"f":null}]},
        {"c":[{"v":"Water","f":null},{"v":6,"f":null}]}
      ]
}

Click Events

Google charts can detect click events on chart items and execute some code whenever an event occurs. This is done by adding a listener handle before drawing the chart:

function doSomethingOnClick() {
                  // Get selected data row
  var selectedItem = chart.getSelection()[0];
  
  if (selectedItem) {
    // Get first column value
    var beverage_name = data.getValue(selectedItem.row, 0);

    // Get second solumn value
    var order_num = data.getValue(selectedItem.row, 1);
    
   alert('Today ordered: ' + order_num + ' bottles of ' + beverage_name +  ' .');
  }
}

// Add on click listener
// Whenever someone clicks on a chart item, doSomethingOnClick function is executed				
var listenerHandle = google.visualization.events.addListener(chart, 'select', doSomethingOnClick); 

Conclusion

Google charts is a very powerful web service. Examples that are shown in this article represent only basic functionality. For advanced usage, check the following site.



   
Vojislav is a web developer, designer and entrepreneur, based in Belgrade, Serbia. He has been working as a freelancer for more than 6 years, having completed more than 50 projects for clients from all over the worlds, specializing in designing and developing personal portfolios and e-commerce websites using Laravel PHP framework and WordPress content management system. Right now, he works as a full-time senior web developer in a company from Copenhagen.
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date