Sign inDemoInstall


Package Overview
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies



JavaScript charting library

Version published
Weekly downloads
decreased by-31.58%
Weekly downloads



[3.1.0] - 2021-8-17

For more information, visit What's new in 3.1.


  • Label.opacity property.
  • Automatic column series corner rounding.
  • Point.radius property to control column corners.
  • Enable point color modifiers (lighten, darken,...) on point.complete.fill and point.complete.hatch.color


  • legendEntry.iconWidth deprecated, enabled for backward compatibility. Use legendEntry.icon.width instead.

Bug Fixes

  • Resizing circular gauge charts may throw error in some scenarios
  • A regression bug that may prevent manual annotation width or height settings from working.
  • Exception when target Div element has no size set.
  • Smart palette update issue when data is added after first render.
  • Multi-shape animation may throw exception in some circumstances.
  • Make candlestick column with zero value (doji candlestick) render correctly.
  • An issue with passing functions for shape label text.
  • legendEntry.icon.width not working.
  • Issue preventing axis.line.breaks.custom from working on circular axes.
  • Range axis scale mode disabled by a non-range series on a different axis.
  • Scale microchart shows numeric ticks in wrong position in some scenarios.
  • Printing the chart with the export toolbar may print extra blank pages.
  • Axis ticks with fill not moving out of view.



JSCharting: Any Chart. Anywhere.

JSCharting is a JavaScript chart library for visualizing your data across all devices and platforms. Every JSCharting license includes the full suite of 150+ advanced chart types plus Gantt charts, JavaScript Org Charts, interactive stock and finance charts, seamless grid and calendar charts, JavaScript maps, and micro charts all for no additional charge. JSCharting has all the features you need and many you don't yet know you want.

Example Charts: Chart Types | Feature Examples


Using CDN

Visit for a list of available releases.

<script src=""></script>

The latest release can be downloaded here.

Using npm

See npm documentation to get started with npm.

npm install --save jscharting
Working with a local copy of JSCharting

The npm package folder jscharting/dist/ includes all the necessary charting JavaScript files and resources such as icons, polyfills, and mapping data files. The chart loads these resources dynamically as needed. The content of this folder should be accessible through http, so when building, copy this folder to a destination in the output website.

If the chart detects a script tag pointing to the main jscharting.js file, it will assume the rest of the resources are located in the same place and will load them from there.

If the JSC namespace is imported from the jscharting.js file as a module, the chart will not know where resources are located and will load them from the CDN. If debug: true chart option is set, a warning message will note that the chart is using the CDN. In order to use local resources, point the chart baseUrl option to the location of the local copy of the jscharting/dist/ folder.

To avoid setting the baseUrl property on every chart instance, it can be set as a global default like so:

JSC.defaults({ baseUrl: './js/jsc/' });

A wrapper module can be used to apply the baseUrl and any other default options that should be used globally such as debug, or styling options. All subsequent charts can import this wrapper instead of the chart itself to ensure the default options are always applied.

import * as JSC from "jscharting";

JSC.defaults({ baseUrl: './js/jsc/' });

export default JSC;

First Chart

A target div element is required in the page for the chart to render in.

<div id="chartDiv" style="width: 100%; height: 400px;"></div>
The chart will automatically conform to the container size by default.

Instantiate a chart with some static data.

const chart = new JSC.Chart('chartDiv', { 
    points: [{ x: 'A', y: 10 }, { x: 'B', y: 5 }]
Get some data

JSC.fetch() is an alias for vanilla JS fetch() function but includes a polyfill for IE11. This function makes it easy to get data for the chart.

    .then(response => response.text())
    .then(text => {
        //Use csv text 

If data is transferred as csv, tsv or any delimiter separated values, it can be converted to JSON format. See the fetch(), CSV, and JSON tutorial for more information.

let data = JSC.csv2Json(
// -> 
// [ {date: 1514786400000, actual: 5409, goal: 7000},
// {date: 1514872800000, actual: 4893, goal: 7000} ]
Map data to chart points
let points = => {  
  return { x:, y: d.actual }; 
//-> [{ x: 1514786400000, y: 5409 }, { x: 1514872800000, y: 4893 }]
Render a chart using data
const chart = new JSC.Chart('chartDiv', {
    // Pass points to the series
    series: [{
        points: points
    // Set the x axis scale to time.
    xAxis_scale_type: 'time'

Crash Course

(5 min read to hit the ground running)

The JSCharting API is designed with ease of use in mind. The chart attempts to select default options that are obvious to reduce the need to customize.

Chart Types

Chart types can be set easily through options such as:

const chart = new JSC.Chart('divId', { type:'line step' });

Examples of chart type settings:

  • 'horizontal column aqua' - Horizontal columns with aqua shading
  • 'gauge linear horizontal' - Horizontal linear gauges.
  • 'radar polar column' - Polar radar chart with columns.

More information


Chart options are set in the chart constructor

const chart = new JSC.Chart('divId', { /*options*/ });

Or at any time after the chart is rendered with

chart.options({ /*options*/ });
Property Expansion

JSCharting offers a declarative API with options such as

chart.options({ title: { label: { text: 'title text' }}});

However, property paths can be combined into single property names as follows:

chart.options({ title_label_text: 'title text' });

Property Expansion Details

Hide Legend
chart.options({ legend_visible: false });
Legend Columns
//Less Detail
chart.options({ legend_template: '%icon %name' });
//More Detail
chart.options({ legend_template: '%average %sum %icon %name' });
Legend Entries for Points

The following code snippet sets a series palette which causes each point in a series to have an entry in the legend box.

chart.options({ defaultSeries_palette: 'default' });

Legend Tutorial

    //Title text
    title_label_text:'Title text',
    //Axis label text
    //Point labels
        label_text:'Annotation text'

Using Labels

Chart with a button

Quickly add UI elements to make charts more interactive.

JSC.Chart('chartDiv', { 
    toolbar_items: {
        'Click Me': {
            events_click: function(){ alert('Button clicked');}

Toolbar & UiItems



Last updated on 17 Aug 2021

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.


Related posts

SocketSocket SOC 2 Logo


  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc