frappe/charts

Simple, responsive, modern SVG Charts with zero dependencies

JavaScript

15,085

480 commits

updated Oct 12, 2026

See the code

README

charts-logo

Frappe Charts

GitHub-inspired modern, intuitive and responsive charts with zero dependencies

Frappe Charts

Frappe Charts is a simple charting library with a focus on a simple API. The design is inspired by various charts you see on GitHub.

Motivation

ERPNext needed a simple sales history graph for its user company master to help users track sales. While using c3.js for reports, the library didn’t align well with our product’s classic design. Existing JS libraries were either too complex or rigid in their structure and behavior. To address this, I decided to create a library for translating value pairs into relative shapes or positions, focusing on simplicity.

Key Features

  • Variety of chart types: Frappe Charts supports various chart types, including Axis Charts, Area and Trends, Bar, Line, Pie, Percentage, Mixed Axis, and Heatmap.
  • Annotations and tooltips: Charts can be annotated with x and y markers, regions, and tooltips for enhanced data context and clarity.
  • Dynamic data handling: Add, remove, or update individual data points in place, or refresh the entire dataset to reflect changes.
  • Customizable configurations: Flexible options like colors, animations, and custom titles allow for a highly personalized chart experience.

Usage

npm install frappe-charts

Import in your project:

import { Chart } from 'frappe-charts'
// or esm import
import { Chart } from 'frappe-charts/dist/frappe-charts.esm.js'
// import css
import 'frappe-charts/dist/frappe-charts.min.css'

Or directly include script in your HTML

<script src="https://unpkg.com/frappe-charts@1.6.1/dist/frappe-charts.min.umd.js"></script>
const data = {
    labels: ["12am-3am", "3am-6pm", "6am-9am", "9am-12am",
        "12pm-3pm", "3pm-6pm", "6pm-9pm", "9am-12am"
    ],
    datasets: [
        {
            name: "Some Data", chartType: "bar",
            values: [25, 40, 30, 35, 8, 52, 17, -4]
        },
        {
            name: "Another Set", chartType: "line",
            values: [25, 50, -10, 15, 18, 32, 27, 14]
        }
    ]
}

const chart = new frappe.Chart("#chart", {  // or a DOM element,
                                            // new Chart() in case of ES6 module with above usage
    title: "My Awesome Chart",
    data: data,
    type: 'axis-mixed', // or 'bar', 'line', 'scatter', 'pie', 'percentage'
    height: 250,
    colors: ['#7cd6fd', '#743ee2']
})

Contributing

  1. Clone this repo.
  2. cd into project directory
  3. npm install
  4. npm i npm-run-all -D (optional --> might be required for some developers)
  5. npm run dev


chart
graph
hacktoberfest
javascript
svg
svg-chart
zero-dependency

frappe/charts

Simple, responsive, modern SVG Charts with zero dependencies

JavaScript

15,085

480 commits

updated Oct 12, 2026

See the code

README

charts-logo

Frappe Charts

GitHub-inspired modern, intuitive and responsive charts with zero dependencies

Frappe Charts

Frappe Charts is a simple charting library with a focus on a simple API. The design is inspired by various charts you see on GitHub.

Motivation

ERPNext needed a simple sales history graph for its user company master to help users track sales. While using c3.js for reports, the library didn’t align well with our product’s classic design. Existing JS libraries were either too complex or rigid in their structure and behavior. To address this, I decided to create a library for translating value pairs into relative shapes or positions, focusing on simplicity.

Key Features

  • Variety of chart types: Frappe Charts supports various chart types, including Axis Charts, Area and Trends, Bar, Line, Pie, Percentage, Mixed Axis, and Heatmap.
  • Annotations and tooltips: Charts can be annotated with x and y markers, regions, and tooltips for enhanced data context and clarity.
  • Dynamic data handling: Add, remove, or update individual data points in place, or refresh the entire dataset to reflect changes.
  • Customizable configurations: Flexible options like colors, animations, and custom titles allow for a highly personalized chart experience.

Usage

npm install frappe-charts

Import in your project:

import { Chart } from 'frappe-charts'
// or esm import
import { Chart } from 'frappe-charts/dist/frappe-charts.esm.js'
// import css
import 'frappe-charts/dist/frappe-charts.min.css'

Or directly include script in your HTML

<script src="https://unpkg.com/frappe-charts@1.6.1/dist/frappe-charts.min.umd.js"></script>
const data = {
    labels: ["12am-3am", "3am-6pm", "6am-9am", "9am-12am",
        "12pm-3pm", "3pm-6pm", "6pm-9pm", "9am-12am"
    ],
    datasets: [
        {
            name: "Some Data", chartType: "bar",
            values: [25, 40, 30, 35, 8, 52, 17, -4]
        },
        {
            name: "Another Set", chartType: "line",
            values: [25, 50, -10, 15, 18, 32, 27, 14]
        }
    ]
}

const chart = new frappe.Chart("#chart", {  // or a DOM element,
                                            // new Chart() in case of ES6 module with above usage
    title: "My Awesome Chart",
    data: data,
    type: 'axis-mixed', // or 'bar', 'line', 'scatter', 'pie', 'percentage'
    height: 250,
    colors: ['#7cd6fd', '#743ee2']
})

Contributing

  1. Clone this repo.
  2. cd into project directory
  3. npm install
  4. npm i npm-run-all -D (optional --> might be required for some developers)
  5. npm run dev


chart
graph
hacktoberfest
javascript
svg
svg-chart
zero-dependency

Project health

Overall

3.0/10

Maintained

0/10

Code review

0/10
OpenSSF Scorecard

Latest release

1.6.2 · Jun 16, 2021

Releases this year

0

Significant stargazers

(top 24 of 112)

Feross Aboukhadijeh

14,909 followers · starred Nov 2017

Luke Edwards

5,087 followers · starred Nov 2017

Cheng Lou

9,748 followers · starred Nov 2017

Gajus Kuizinas

2,635 followers · starred May 2021