Google Chart and Visualization of Data

July 4, 2011 by Igor Lozhkin
Recently, I posted a blog article "Charting and Data Visualization in HTML-Based Reports" (http://www.arnicasoftware.com/blog/charting-and-data-visualization-in-html-based-reports/2791/index.aspx), which discusses how HTML 5 (and Flash-based) charting is integrated with Arnica WebReport. The HTML 5 and Flash chart engines are part of WebReport and are available "right-out-of-the-box". In this article, I would like to review another aspect of Arnica WebReport - its open architecture compatible with virtually any contemporary chart engine, either deployed locally on the server, or in a private cloud within intranet, or available as a public cloud-based solution. 

It is a fact that charting is not really the primary purpose of a reporting engine. Report's main responsibility is to execute a query, get data, apply data filters, perform sorting, grouping, calculations and other data processing logic, and then display data in a chosen format such as table, form, string, etc. Charting is a nice add-on, and because it can be so impressive, we tend to associate it with the core reporting functionality. But it is not the same. When we humans talk about "data visualization", computers (if they could talk) would call it "data pixelization", which is definitely not the same as data processing provided by the reporting engine. 

So, what could reporting engine do to help implement effective and impressing data visualization? The answer is: generate data feeds. And let chart engine do the rest (i.e. consume the data feeds and generate great looking charts).

Yes, generating data feeds is a reporting engine feature. Report knows data and its engine has the ability to convert data to any format and feed it to a charting engine. 

Data feeds are one of the strong features of Arnica WebReport from both sides: performance and flexibility of its configuration. Let's consider possible data feed options, which chart engine developers might have programmed into their products and thus require the product on the other side of the solution (i.e. the reporting engine) to comply. Suppose report data contains sales per month with the following metrics:

Jan    1000
Feb    5000
Mar    2500
Now, let's image the type of format for data feeds that chart engine developers might require from the reporting engine:

option #1:  
Jan,1000;Feb,5000;Mar,2500
option #2:  
Jan,Feb,Mar|1000,5000,2500
option #3:
feed (a): Jan|Feb|Mar
feed (b): "1000","5000","2500"
option #4:
<value>
  <x>Jan</x>
  <y>1000</y>
</value>
<value>
  <x>Feb</x>
  <y>5000</y>
</value>
<value>
  <x>Mar</x>
  <y>2500</y>
</value>
and so on...

This means that report engine must be able to specify various delimiters, wrapper strings, record skip intervals, and other data records parsing and composition properties to put together data from different records in compliance with a particular chart engine. A perfect example of such third part chart engine is Google Chart. Its capabilities, documentation and tools are available from the Google web site at the following URL: http://code.google.com/apis/chart/

Arnica WebReport provides seamless integration with the Google Chart engine by using its serialization capabilities to create data feeds with various formatting requirements. 

The following knowledge base article describes how to create reports with integrated charts rendered by the Google Chart engine: http://www.arnicasoftware.com/knowledge-base/how-to-integrate-report-with-google-charts/2830/index.aspx.

The reports may also be accessed from the Arnica demo site: