Canvasimo 
An HTML5 canvas drawing library, with 150+ useful methods, jQuery-like fluent interface, and cross-browser compatibility enhancements.
Full documentation and examples available on canvasimo.com
Installation
Install Canvasimo with npm (add --save
to add to your package.json)
npm install canvasimo
...or download from GitHub
Getting started
Load Canvasimo
Canvasimo can be bundled with all major build tools, or loaded with a script tag and used as a global
With an ES6 bundler / TypeScript (recommended)
import Canvasimo from 'canvasimo';
import { Canvasimo } from 'canvasimo';
Both of these will import the Canvasimo class as it is both a default and named export.
With an ES5 bundler / commonjs
var canvasimo = require('canvasimo');
var Canvasimo = canvasimo.Canvasimo;
As a global
<script type="text/javascript" src="path/to/canvasimo.js">
Now Canvasimo is accessible globally like so (to allow for ES6 and TypeScript default imports)
const Canvasimo = canvasimo.Canvasimo;
Create a Canvasimo instance
const element = document.getElementById('canvas');
const canvas = new Canvasimo(element);
Begin drawing
Here's a simple chart example
const margin = 20;
const width = 600;
const height = 200;
const start = 0;
const end = 11;
const colors = ['red', 'green', 'blue'];
const data = [
[3, 7, 2, 8, 3, 8, 5, 4, 4, 7],
[7, 5, 6, 7, 8, 4, 5, 3, 2, 3],
[9, 8, 7, 5, 3, 6, 4, 5, 2, 5]
];
canvas
.setSize(width, height)
.setFill('black')
.setStroke('black')
.setStrokeWidth(1)
.setTextAlign('center')
.setTextBaseline('middle')
.setFontFamily('arial')
.setFontSize(10)
.beginPath()
.strokeLine(margin, margin, margin, height - margin)
.beginPath()
.strokeLine(margin, height - margin, width - margin, height - margin)
.repeat(start, end, (index) => {
canvas
.fillText(index, margin / 2, height - margin - (height - margin * 2) / 10 * index)
})
.forEach(data, (dataSet, index) => {
const verticalScale = (height - margin * 2) / (end - 1);
const horizontalScale = (width - margin * 2) / (dataSet.length - 1);
const values = dataSet.map((value, index) => [index * horizontalScale, -value * verticalScale]);
canvas
.save()
.translate(margin, height - margin)
.beginPath()
.strokePath(values, colors[index])
.restore()
});
TypeScript support
As of version 0.7.0
Canvasimo only officially supports TypeScript 3.1.6
and upwards.
Canvasimo may work with older versions of TypeScript, but due to a change in TypeScript's native lib types you will need to create a global type alias:
type Canvas2DContextAttributes = CanvasRenderingContext2DSettings;