Lightweight Line/Area/Pie Chart Plugin with jQuery and Canvas

Lightweight Line/Area/Pie Chart Plugin with jQuery and Canvas
File Size: 7.29 KB
Views Total:
Last Update:
Publish Date:
Official Website: Go to website
License: MIT
   

A simple lightweight jQuery plugin that makes use of canvas & Javascript to produce an interactive Line, Area, Scattered, Bar, Hybrid, Pie chart with many configuration options.

How to use it:

1. Load the latest version of jQuery library and the jQuery line chart plugin in your document.

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js" type="text/javascript"></script>
<script src="SimpleChart.js"></script>

2. Create an empty DIV element which will be served as a container for the line chart.

<div id="linegraph"> </div>

3. Prepare your plotted data using JavaScript arrays.

var graphdata1 = {
    linecolor: "#FF99CC",
    title: "Monday",
    values: [
    { X: "6:00", Y: 0.00 },
    { X: "7:00", Y: 20.00 },
    { X: "8:00", Y: 40.00 },
    { X: "9:00", Y: 34.00 },
    { X: "10:00", Y: 40.25 },
    { X: "11:00", Y: 28.56 },
    { X: "12:00", Y: 18.57 },
    { X: "13:00", Y: 34.00 },
    { X: "14:00", Y: 40.89 },
    { X: "15:00", Y: 12.57 },
    { X: "16:00", Y: 28.24 },
    { X: "17:00", Y: 18.00 },
    { X: "18:00", Y: 34.24 },
    { X: "19:00", Y: 40.58 },
    { X: "20:00", Y: 12.54 },
    { X: "21:00", Y: 28.00 },
    { X: "22:00", Y: 18.00 },
    { X: "23:00", Y: 34.89 },
    { X: "0:00", Y: 40.26 },
    { X: "1:00", Y: 28.89 },
    { X: "2:00", Y: 18.87 },
    { X: "3:00", Y: 34.00 },
    { X: "4:00", Y: 40.00 }
    ]
};
var graphdata2 = {
    linecolor: "#00CC66",
    title: "Tuesday",
    values: [
    { X: "6:00", Y: 0.00 },
    { X: "7:00", Y: 120.00 },
    { X: "8:00", Y: 140.00 },
    { X: "9:00", Y: 134.00 },
    { X: "10:00", Y: 140.25 },
    { X: "11:00", Y: 128.56 },
    { X: "12:00", Y: 118.57 },
    { X: "13:00", Y: 134.00 },
    { X: "14:00", Y: 140.89 },
    { X: "15:00", Y: 112.57 },
    { X: "16:00", Y: 128.24 },
    { X: "17:00", Y: 118.00 },
    { X: "18:00", Y: 134.24 },
    { X: "19:00", Y: 140.58 },
    { X: "20:00", Y: 112.54 },
    { X: "21:00", Y: 128.00 },
    { X: "22:00", Y: 118.00 },
    { X: "23:00", Y: 134.89 },
    { X: "0:00", Y: 140.26 },
    { X: "1:00", Y: 128.89 },
    { X: "2:00", Y: 118.87 },
    { X: "3:00", Y: 134.00 },
    { X: "4:00", Y: 180.00 }
    ]
};
var graphdata3 = {
    linecolor: "#3399FF",
    title: "Wednesday",
    values: [
    { X: "6:00", Y: 30.00 },
    { X: "7:00", Y: 10.00 },
    { X: "8:00", Y: 14.00 },
    { X: "9:00", Y: 34.00 },
    { X: "10:00", Y: 47.25 },
    { X: "11:00", Y: 18.56 },
    { X: "12:00", Y: 68.57 },
    { X: "13:00", Y: 74.00 },
    { X: "14:00", Y: 80.89 },
    { X: "15:00", Y: 42.57 },
    { X: "16:00", Y: 98.24 },
    { X: "17:00", Y: 108.00 },
    { X: "18:00", Y: 14.24 },
    { X: "19:00", Y: 14.58 },
    { X: "20:00", Y: 11.54 },
    { X: "21:00", Y: 48.00 },
    { X: "22:00", Y: 58.00 },
    { X: "23:00", Y: 34.89 },
    { X: "0:00", Y: 10.26 },
    { X: "1:00", Y: 148.89 },
    { X: "2:00", Y: 138.87 },
    { X: "3:00", Y: 164.00 },
    { X: "4:00", Y: 170.00 }
    ]
};

4. Initialize the plugin to draw a line chart into the DIV container you just created.

$(function () {
  $("#linegraph").LineChart({    
    toolwidth: "50",
    toolheight: "25",
    axiscolor: "#E6E6E6",
    textcolor: "#6E6E6E",
    showlegends: true,
    data: [graphdata1, graphdata2, graphdata3],
    legendsize: "80",
    legendposition: 'bottom',
    xaxislabel: 'Hours',
    title: 'Weekly Profit',
    yaxislabel: 'Profit in $'
  });
});

5. The sample CSS to style the line chart.

.LineChart #tip {
  background-color: #f0f0f0;
  border: 1px solid #d0d0d0;
  position: absolute;
  left: -200px;
  top: 30px;
}

.down-triangle {
  width: 0;
  height: 0;
  border-top: 10px solid #d0d0d0;
  border-left: 6px solid transparent;
  border-right: 6px solid transparent;
  position: absolute;
  left: -200px;
}

.LineChart #highlighter {
  position: absolute;
  left: -200px;
}

.-line-chart-holder {
  float: left;
  position: relative;
  width: 100%;
  background-color: #fff;
  border: 1px solid #cecece;/*padding: 6px;*/
}

.LineChart .legendsli { list-style: none; }

.LineChart .legendsli span {
  float: left;
  vertical-align: middle;
}

.LineChart .legendsli span.legendindicator {
  position: relative;
  top: 5px;
}

.LineChart .legendsli span.legendindicator .line {
  width: 30px;
  height: 3px;
}

.LineChart .legendsli span.legendindicator .circle {
  width: 12px;
  height: 12px;
  border-radius: 20px;
  position: relative;
  top: -5px;
  right: 20px;
}

.line-chart-legends {
  background: #E7E7E7;
  border: 1px solid #d6d7dd;
  padding: 5px;
  margin: 2px 0px;
}

.line-chart-legends ul { }

.line-chart-legends ul li {
  display: inline;
  border-right: 1px solid #d6d7dd;
  float: left;
  padding: 10px;
}

.line-chart-legends ul li:last-child { border-right: 0px; }

.line-chart-legends.vertical { margin: 0px 10px; }

.line-chart-legends.vertical ul li {
  display: block;
  border: 0px;
  border-bottom: 1px solid #d6d7dd;
}

.line-chart-legends.vertical ul li:last-child { border-bottom: 0px; }

.line-chart-Header {
  position: absolute;
  font-size: 16px;
}

6. All the default configs.

$(function () {
  $("#linegraph").LineChart({    
    ChartType: "Line", //Area, Scattered
    xPadding: 60,
    yPadding: 50,
    topmargin: 25,
    rightmargin: 20,
    data: null,
    toolwidth: 300,
    toolheight: 300,
    axiscolor: "#333",
    font: "italic 10pt sans-serif",
    headerfontsize: "14px",
    axisfontsize: "12px",
    textAlign: "center",
    textcolor: "#E6E6E6",
    showlegends: true,
    legendposition: 'bottom',
    legendsize: '100',
    xaxislabel: null,
    yaxislabel: null,
    title: null,
    LegendTitle: "Legend"	
  });
});

Change logs:

2015-01-30

  • Added Stacked, Stacked hybrid and enhancements to pie.

2015-01-23

  • Added bar, hybrid, pie chart support.

2015-01-12

  • added Area/Scatterred Chart support.

This awesome jQuery plugin is developed by moniecorleone. For more Advanced Usages, please check the demo page or visit the official website.