Highcharts is a pure JavaScript based charting library meant to enhance web applications by adding interactive charting capability. It supports a wide range of charts. Charts are drawn using SVG in standard browsers like Chrome, Firefox, Safari, Internet Explorer(IE). In legacy IE 6, VML is used to draw the graphics.
Let us now discuss a few important features of the Highcharts Library.
Compatability − Works seemlessly on all major browsers and mobile platforms like android and iOS.
Multitouch Support − Supports multitouch on touch screen based platforms like android and iOS.Ideal for iPhone/iPad and android based smart phones/ tablets.
Free to Use − Open source and is free to use for non-commercial purpose.
Lightweight − highcharts.js core library with size nearly 35KB, is an extremely lightweight library.
Simple Configurations − Uses json to define various configurations of the charts and very easy to learn and use.
Dynamic − Allows to modify chart even after chart generation.
Multiple axes − Not restricted to x, y axis. Supports multiple axis on the charts.
Configurable tooltips − Tooltip comes when a user hovers over any point on a chart. Highcharts provides tooltip inbuilt formatter or callback formatter to control the tooltip programmatically.
DateTime support − Handle date time specially. Provides numerous inbuilt controls over date wise categories.
Export − Export chart to PDF/ PNG/ JPG / SVG format by enabling export feature.
Print − Print chart using web page.
Zoomablity − Supports zooming chart to view data more precisely.
External data − Supports loading data dynamically from server. Provides control over data using callback functions.
Text Rotation − Supports rotation of labels in any direction.
Highcharts library provides the following types of charts −
Sr.No. | Chart Type & Description |
---|---|
1 | Line Charts Used to draw line/spline based charts. |
2 | Area Charts Used to draw area wise charts. |
3 | Pie Charts Used to draw pie charts. |
4 | Scatter Charts Used to draw scattered charts. |
5 | Bubble Charts Used to draw bubble based charts. |
6 | Dynamic Charts Used to draw dynamic charts where user can modify charts. |
7 | Combinations Used to draw combinations of variety of charts. |
8 | 3D Charts Used to draw 3D charts. |
9 | Angular Gauges Used to draw speedometer type charts. |
10 | Heat Maps Used to draw heat maps. |
11 | Tree Maps Used to draw tree maps. |
In our subsequent chapters, we will discuss each type of above mentioned charts in details with examples.
Highcharts is open source and is free to use for non-commercial purpose. In order to use Highcharts in commercial projects, follow the link − License and Pricing
In this chapter, we will discuss how to set up the Highcharts library to be used in web application development.
Highcharts requires jQuery as a dependency. First, we will install the jQuery library and then the Highcharts library.
There are two ways to use jQuery.
Download − Download it locally from jQuery.com and use it.
CDN access − You also have access to a CDN. The CDN will give you access around the world to regional data centers; in this case, Google host. This means using CDN moves the responsibility of hosting files from your own servers to a series of external ones. This also offers an advantage that if the visitor to your webpage has already downloaded a copy of jQuery from the same CDN, it will not have to be re-downloaded.
Include the jQuery JavaScript file in the HTML page using the following script −
<head> <script src = "/jquery/jquery.min.js"></script> </head>
We are using the CDN versions of the jQuery library throughout this tutorial.
Include the jQuery JavaScript file in the HTML page using the following script −
<head> <script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"> </script> </head>
The following are the two ways to use Highcharts.
Download − Download it locally from highcharts.com and use it.
CDN access − You also have access to a CDN. The CDN will give you access around the world to regional data centers; in this case, the Highcharts host - Code.Highcharts.Com.
Include the Highcharts JavaScript file in the HTML page using the following script −
<head> <script src = "/highcharts/highcharts.js"></script> </head>
We are using the CDN versions of the Highcharts library throughout this tutorial.
Include the Highcharts JavaScript file in the HTML page using the following script −
<head> <script src = "https://code.highcharts.com/highcharts.js"></script> </head>
In this chapter, we will showcase the configuration required to draw a chart using the Highcharts API.
Create an HTML page with the jQuery and Highcharts javascript libraries.
HighchartsTestHarness.htm
<html> <head> <title>Highcharts Tutorial</title> <script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"> </script> <script src = "https://code.highcharts.com/highcharts.js"></script> </head> <body> <div id = "container" style = "width: 550px; height: 400px; margin: 0 auto"></div> <script language = "JavaScript"> $(document).ready(function() { }); </script> </body> </html>
Here the container div is used to contain the chart drawn using Highcharts library.
Highcharts library uses very simple configurations using json syntax.
$('#container').highcharts(json);
Here json represents the json data and configuration which the Highcharts library uses to draw a chart within the container div using the highcharts() method. Now, we will configure the various parameters to create the required json string.
Configure the title of the chart.
var title = { text: 'Monthly Average Temperature' };
Configure the subtitle of the chart.
var subtitle = { text: 'Source: WorldClimate.com' };
Configure the ticker to be displayed on the X-Axis.
var xAxis = { categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun' ,'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] };
Configure the title, plot lines to be displayed on the Y-Axis.
var yAxis = { title: { text: 'Temperature (\xB0C)' }, plotLines: [{ value: 0, width: 1, color: '#808080' }] };
Configure the tooltip. Put suffix to be added after value (y-axis).
var tooltip = { valueSuffix: '\xB0C' }
Configure the legend to be displayed on the right side of the chart along with other properties.
var legend = { layout: 'vertical', align: 'right', verticalAlign: 'middle', borderWidth: 0 };
Configure the data to be displayed on the chart. Series is an array where each element of this array represents a single line on the chart.
var series = [ { name: 'Tokyo', data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6] }, { name: 'New York', data: [-0.2, 0.8, 5.7, 11.3, 17.0, 22.0, 24.8, 24.1, 20.1, 14.1, 8.6, 2.5] }, { name: 'Berlin', data: [-0.9, 0.6, 3.5, 8.4, 13.5, 17.0, 18.6, 17.9, 14.3, 9.0, 3.9, 1.0] }, { name: 'London', data: [3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8] } ];
Combine all the configurations.
var json = {}; json.title = title; json.subtitle = subtitle; json.xAxis = xAxis; json.yAxis = yAxis; json.tooltip = tooltip; json.legend = legend; json.series = series;
$('#container').highcharts(json);
Consider the following example to further understand the Configuration Syntax −
highcharts_configuration.htm
<html> <head> <title>Highcharts Tutorial</title> <script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"> </script> <script src = "https://code.highcharts.com/highcharts.js"></script> </head> <body> <div id = "container" style = "width: 550px; height: 400px; margin: 0 auto"></div> <script language = "JavaScript"> $(document).ready(function() { var title = { text: 'Monthly Average Temperature' }; var subtitle = { text: 'Source: WorldClimate.com' }; var xAxis = { categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] }; var yAxis = { title: { text: 'Temperature (\xB0C)' }, plotLines: [{ value: 0, width: 1, color: '#808080' }] }; var tooltip = { valueSuffix: '\xB0C' } var legend = { layout: 'vertical', align: 'right', verticalAlign: 'middle', borderWidth: 0 }; var series = [{ name: 'Tokyo', data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6] }, { name: 'New York', data: [-0.2, 0.8, 5.7, 11.3, 17.0, 22.0, 24.8, 24.1, 20.1, 14.1, 8.6, 2.5] }, { name: 'Berlin', data: [-0.9, 0.6, 3.5, 8.4, 13.5, 17.0, 18.6, 17.9, 14.3, 9.0, 3.9, 1.0] }, { name: 'London', data: [3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8] } ]; var json = {}; json.title = title; json.subtitle = subtitle; json.xAxis = xAxis; json.yAxis = yAxis; json.tooltip = tooltip; json.legend = legend; json.series = series; $('#container').highcharts(json); }); </script> </body> </html>
Verify the result.
Line charts are used to draw line/spline based charts. In this section, we will discuss the different types of line and spline based charts.
Sr.No. | Chart Type & Description |
---|---|
1 | Basic line
Basic line chart. |
2 | With data labels
Chart with data labels. |
3 | Ajax loaded data, clickable points
Chart drawn after retrieving data from server. |
4 | Time series, zoomable
Chart with time series. |
5 | Spline with inverted axes
Spline chart having inverted axes. |
6 | Spline with symbols
Spline chart using symbols for heat/rain. |
7 | Spline with plot bands
Spline chart with plot bands. |
8 | Time data with irregular intervals
Chart of a large set of time based data. |
9 | Logarithmic axis
Chart depicting the logarithmic axis. |
Area charts are used to draw area based charts. In this section, we will discuss the different types of area based charts.
Sr.No. | Chart Type & Description |
---|---|
1 | Basic Area
Basic area chart. |
2 | Area with negative values
Area chart having negative values. |
3 | Stacked area
Chart having areas stacked over one another. |
4 | Percentage area
Chart with data in percentage terms. |
5 | Area with missing points
Chart with missing points in the data. |
6 | Inverted axes
Area using inverted axes. |
7 | Area-spline
Area chart using spline. |
8 | Area range
Area chart using ranges. |
9 | Area range and line
Area chart using range and line. |
Bar charts are used to draw area based charts. In this section, we will discuss the different types of bar based charts.
Sr.No. | Chart Type & Description |
---|---|
1 | Basic Bar
Basic bar chart. |
2 | Stacked Bar
Bar chart having bar stacked over one another. |
3 | Negative Stacked area
Bar chart with negative stack. |
Column charts are used to draw column based charts. In this section, we will discuss the different types of column based charts.
Sr.No. | Chart Type & Description |
---|---|
1 | Basic Column
Basic column chart. |
2 | Column with negative values
Column chart having negative values. |
3 | Stacked column
Chart having column stacked over one another. |
4 | Stacked and Grouped column
Chart with column in stacked and grouped form. |
5 | Column with stacked percentage
Chart with stacked percentage. |
6 | Column with rotated labels
Column Chart with rotated labels in columns. |
7 | Column with drilldown
Column Chart with drill down capability. |
8 | Column with fixed placement
Column Chart with fixed placement. |
9 | Data defined in HTML table
Column Chart using Data defined in HTML table. |
10 | Column Range
Column Chart using ranges. |
Pie charts are used to draw pie based charts. In this section, we will discuss the different types of pie based charts.
Sr.No. | Chart Type & Description |
---|---|
1 | Basic Pie
Basic pie chart. |
2 | Pie with Legends
Pie chart with Legends. |
3 | Donut Chart
Donut Chart. |
4 | Semi circle Donut
Semi circle Donut chart. |
5 | Pie with drill down
Pie chart with drill down capability. |
6 | Pie chart with gradient
Pie chart with gradient fill. |
7 | Pie chart with monochrome
Pie chart with monochrome fill. |
Scatter charts are used to draw scatter based charts. In this section, we will discuss the different types of scatter based chart(s).
Sr.No. | Chart Type & Description |
---|---|
1 | Scatter Chart
Scatter Chart. |
Bubble charts are used to draw bubble based charts. In this section, we will discuss the different types of bubble based chart(s).
Sr.No. | Chart Type & Description |
---|---|
1 | Bubbles Chart
Bubbles Chart. |
2 | 3D Bubbles Chart
3D Bubbles Chart. |
Dynamic charts are used to draw data based charts where data can change after rendering of chart. In this section, we will discuss the different types of dynamic chart.
Sr.No. | Chart Type & Description |
---|---|
1 | Spline updating each second
Spline Chart updating each second. |
2 | Click to add a point
Chart with point addition capability. |
Combination charts are used to draw mixed charts; for example, bar chart with pie chart. In this section, we will discuss the different types of combinations charts.
Sr.No. | Chart Type & Description |
---|---|
1 | Column, Line and Pie
Chart with Column, Line and Pie. |
2 | Dual Axes, Line and Column
Chart with Dual Axes, Line and Column. |
3 | Multiple Axes
Chart having Multiple Axes. |
4 | Scatter with regression line
Scatter chart with regression line. |
3D charts are used to draw 3-dimensional charts. In this section, we will discuss the different types of 3D charts.
Sr.No. | Chart Type & Description |
---|---|
1 | 3D Column
3D Column Chart. |
2 | 3D Column with null
3D Column Chart with null and 0 values. |
3 | 3D Column with stacking
3D Column Chart with stacking and grouping. |
4 | 3D Pie
3D Pie Chart. |
5 | 3D Donut
3D Donut Chart. |
Angular Gauges charts are used to draw meter/gauge type charts. In this section, we will discuss the different types of Angular Gauges charts.
Sr.No. | Chart Type & Description |
---|---|
1 | Angular Gauge
Angular Gauge Chart. |
2 | Solid Gauge
Solid Gauge Chart. |
3 | Clock
Clock. |
4 | Gauge with dual axes
Gauge Chart with dual axes. |
5 | VU Meter
VU Meter Chart. |
Heat Map charts are used to draw heat map type charts. In this section, we will discuss the different types of Heat Maps.
Sr.No. | Chart Type & Description |
---|---|
1 | Heat Map
Heat Map. |
2 | Large Heat Map
Large Heat Map. |
Tree Map charts are used to draw tree map type charts. In this section, we will discuss the different types of Tree Maps.
Sr.No. | Chart Type & Description |
---|---|
1 | Tree Map
Tree Map with color axis. |
2 | Tree Map with Levels
Tree Map with Levels. |
3 | Large Tree Map
Large Tree Map. |