Blazing Charts: A WordPress Plugin for many of Charting Libraries

Description:

We are not going to re-invent the wheel, and this plugin is not going to give you another charting library. This purpose of this plugin is to let you to get the most out of already existing and awesome charting libraries. There are so many of them out there, and most of them are for free. Many of the other commercial libraries are free for a personal or non-profit project, or have a free branded version, which may have a small link to their website.

Here is a list of libraries currently added to the collection. If you know another charting library, compatible with GPL license, please inform me to add it.

  • HighCharts.js: The free version with a small link to their website. This plugin does NOT substitute HighCharts terms of use. HighCharts use is free for a personal or non-profit project under the Creative Commons Attribution-NonCommercial 3.0 License.Anyway please refer to HighCharts license page http://shop.highsoft.com/highcharts.html to check the HighCharts precise license conditions.
  • Morris.js
  • ZingChart: The free branded version
  • Chart.js
  • Google Charts: by loading Google's JSAPI library loader remotely (as a service), and then using it to load the visualization library and other packages
  • D3.js
  • Chartist.js
  • Smoothie Charts
  • Flot Charts

Please refer to the license page of each library you want to use to check the precise license conditions.

What does this plugin do?

This plugin allows you to create chart code snippets, which can be inserted into the posts or pages by using the shortcode of "BlazingChart".

Another scenario is you have a function, defined in another plugin or in your theme, which extracts data from database and produces the scripts for the chart. Then you can give the name of that function as a parameter to the shortcode, so the function is called and the output of that function will be inserted in the page. The "BlazingChart" shortcode can have up to 4 parameters:

  1. "charttype": The first parameter of that shortcode tells which Charting library you want to use. At the moment the value of this parameter can be one of these:
    • highcharts: for HighCharts.js
    • morris: for Morris.js
    • zingchart: for ZingChart
    • chartjs: for Chart.js
    • google: for Google Charts
    • d3: for D3.js
    • chartist: for Chartist.js
    • smoothie: Smoothie Charts
    • flot: for Flot library

    Other than Google Charts which does not have a local version of library, all the other libraries are included in this plugin. Some of them are hosted on a CDN as well. So by changing the settings, you can easily switch between remote or local chart/map libraries.

  2. "source": The second parameter specifies the user-friendly slug of the chart snippet as the source of script and data for the chart.

  3. "function": If a function, defined in another plugin or in the theme, is going to produce the data and script for the chart, the name of that function can be given as the value of this parameter. This value can be not only a function name, but also other types of callbacks, like "Foo::method", "array('Foo', 'method')", or "array($obj, 'method')".

  4. "options": Some of the charting libraries are just a single file. But others, like Flot, are divided to a main library and several auxiliary libraries, to make it lighter and more efficient. By using this parameter, you can give a comma separated list of auxiliary libraries of the main library to load. Here is the list of options for each library:

  • HighCharts.js: more, 3d, exporting
  • D3.js : pie
  • Flot Charts : colorhelpers, canvas, categories, crosshair, errorbars, fillbetween, image, navigate, pie, resize, selection, stack, symbol, threshold, time

How Charting libraries are used?

To include JavaScript files efficiently, none of these libraries are enqueued, until the shortcode of "BlazingChart" appears in a post or a widget. The plugin loads only one of these libraries, specified by "charttype" parameter. Moreover, to load the page faster, that library is loaded in the footer.

You can also use a built-in PHP function to invoke the chart anywhere in your template:

"name of one of the aforementioned charting libraries", "source" => "slug of the chart snippet", "options" => "auxiliary libraries to load" ); // call the function to invoke the shortcode handler blazing_charts_insert($patts); ?>

 

As always, there are exceptions:

 

To reduce the size of the libraries loaded for Google Charts, that library decides which portions of the library to be included, depending to the type of the chart. So the link to the CDN library must be included at the top of the script, saved in the text file.

 

How To use this plugin:

  1. However theoretically you can have various charts in a single page, drawn by more than one charting library, you would rather not to do that. these libraries may conflict each other, and may not get any of the charts drawn properly. Just make sure in every page, only one of those libraries is included.

  2. Every chart has two major parts: first a container, specifed by a <div> or <canvas> tag, with a certain id or class; and second a script which tells how that chart should be drawn. If you have more than one chart in a single page, make sure each chart, saved as a Chart Snippet or produced by a function, has a unique id or class for its container. Otherwise there will be a conflict between those charts.

Examples

I tried to bring some examples about each of the libraries, in this plugin's URI:

http://blazingspider.com/wp-demo

Installation

1. If you choose to install in manually, make sure all the files from the downloaded archive to be uploaded to the '/wp-content/plugins/blazing-charts/' directory.

2. Activate the plugin through the 'Plugins' menu in WordPress