awesome-charting
A curated list of the best charting and dataviz resources that developers may find useful, including the best JavaScript charting libraries
Top Related Projects
Simple HTML5 Charts using the <canvas> tag
Bring data to life with SVG, Canvas and HTML. :bar_chart::chart_with_upwards_trend::tada:
Open-source JavaScript charting library behind Plotly and Dash
Apache ECharts is a powerful, interactive charting and data visualization library for browser
JavaScript 3D Library.
Highcharts JS, the JavaScript charting framework
Quick Overview
Awesome-charting is a curated list of chart and graph libraries and tools. It provides a comprehensive collection of resources for data visualization, including JavaScript libraries, server-side libraries, and desktop applications. This repository serves as a valuable reference for developers and data scientists looking for charting solutions.
Pros
- Extensive collection of charting libraries and tools
- Well-organized categories for easy navigation
- Regularly updated with new additions
- Includes both open-source and commercial options
Cons
- No standardized evaluation criteria for included libraries
- Some listed projects may be outdated or no longer maintained
- Lacks detailed comparisons between different charting solutions
- May overwhelm users with too many options
Note: As this is not a code library but a curated list of resources, there are no code examples or getting started instructions to provide.
Competitor Comparisons
Simple HTML5 Charts using the <canvas> tag
Pros of Chart.js
- Lightweight and easy to use, with a simple API
- Extensive documentation and active community support
- Responsive and mobile-friendly out of the box
Cons of Chart.js
- Limited chart types compared to Awesome Charting's extensive list
- Less customization options for advanced visualizations
- May require additional plugins for specific features
Code Comparison
Chart.js:
new Chart(ctx, {
type: 'bar',
data: {
labels: ['Red', 'Blue', 'Yellow'],
datasets: [{
label: 'My Dataset',
data: [12, 19, 3]
}]
}
});
Awesome Charting (using ZingChart as an example):
zingchart.render({
id: 'myChart',
data: {
type: 'bar',
series: [{
values: [12, 19, 3]
}]
}
});
Summary
Chart.js is a popular, lightweight charting library that's easy to use and well-documented. It's great for simple to moderate chart needs but may fall short for complex visualizations. Awesome Charting, on the other hand, is a curated list of various charting libraries, offering a wider range of options and features for different use cases. The choice between them depends on the specific project requirements and the level of customization needed.
Bring data to life with SVG, Canvas and HTML. :bar_chart::chart_with_upwards_trend::tada:
Pros of d3
- Highly flexible and customizable, allowing for complex and unique visualizations
- Large and active community, with extensive documentation and examples
- Powerful data manipulation and binding capabilities
Cons of d3
- Steeper learning curve, especially for beginners
- Requires more code to create basic charts compared to higher-level libraries
- Performance can be an issue with large datasets or complex visualizations
Code Comparison
d3:
const svg = d3.select("body").append("svg")
.attr("width", 400)
.attr("height", 300);
svg.selectAll("rect")
.data(data)
.enter()
.append("rect")
.attr("x", (d, i) => i * 40)
.attr("y", d => 300 - d * 10)
.attr("width", 35)
.attr("height", d => d * 10);
awesome-charting (using Chart.js as an example):
const ctx = document.getElementById('myChart').getContext('2d');
const chart = new Chart(ctx, {
type: 'bar',
data: {
labels: ['A', 'B', 'C', 'D'],
datasets: [{
data: [12, 19, 3, 5]
}]
}
});
Summary
d3 offers unparalleled flexibility and power for creating custom visualizations but comes with a steeper learning curve. awesome-charting provides a curated list of various charting libraries, many of which offer simpler APIs for common chart types but may lack the fine-grained control of d3.
Open-source JavaScript charting library behind Plotly and Dash
Pros of plotly.js
- Interactive and highly customizable charts with a wide range of chart types
- Supports both 2D and 3D visualizations
- Extensive documentation and community support
Cons of plotly.js
- Larger file size compared to some lightweight charting libraries
- Steeper learning curve for complex visualizations
- May require additional configuration for responsive designs
Code Comparison
plotly.js:
Plotly.newPlot('myDiv', [{
x: [1, 2, 3, 4],
y: [10, 15, 13, 17],
type: 'scatter'
}]);
awesome-charting (using Chart.js as an example):
new Chart(ctx, {
type: 'line',
data: {
labels: [1, 2, 3, 4],
datasets: [{
data: [10, 15, 13, 17]
}]
}
});
Summary
plotly.js offers a comprehensive charting solution with advanced features and interactivity, while awesome-charting is a curated list of various charting libraries. plotly.js provides a unified API for creating diverse chart types, whereas awesome-charting allows users to choose from multiple libraries based on specific needs. The code comparison shows that plotly.js has a more straightforward syntax for basic charts, but both approaches offer flexibility in creating visualizations.
Apache ECharts is a powerful, interactive charting and data visualization library for browser
Pros of ECharts
- Comprehensive and feature-rich charting library with a wide variety of chart types
- Excellent performance, especially for large datasets
- Strong community support and regular updates
Cons of ECharts
- Steeper learning curve due to its extensive API and options
- Larger file size compared to some lightweight alternatives
Code Comparison
ECharts:
var myChart = echarts.init(document.getElementById('main'));
var option = {
xAxis: {type: 'category', data: ['Mon', 'Tue', 'Wed']},
yAxis: {type: 'value'},
series: [{data: [120, 200, 150], type: 'line'}]
};
myChart.setOption(option);
Awesome-charting: (Note: This is a curated list, not a charting library, so direct code comparison is not applicable)
Additional Notes
ECharts is a full-fledged charting library, while Awesome-charting is a curated list of various charting libraries and tools. ECharts offers a complete solution for creating interactive and customizable charts, whereas Awesome-charting provides a comprehensive resource for discovering and comparing different charting options.
ECharts is better suited for projects requiring advanced visualization capabilities and high performance, while Awesome-charting is an excellent starting point for developers looking to explore various charting solutions and choose the one that best fits their specific needs.
JavaScript 3D Library.
Pros of three.js
- Powerful 3D rendering capabilities for creating complex, interactive 3D visualizations
- Large and active community, with extensive documentation and examples
- Supports a wide range of 3D features, including animations, lighting, and textures
Cons of three.js
- Steeper learning curve compared to simpler charting libraries
- May be overkill for basic 2D charts and graphs
- Larger file size and potentially higher performance overhead
Code Comparison
three.js:
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
awesome-charting (using Chart.js as an example):
const ctx = document.getElementById('myChart').getContext('2d');
const chart = new Chart(ctx, {
type: 'bar',
data: { /* chart data */ },
options: { /* chart options */ }
});
Summary
three.js is a powerful 3D graphics library for creating complex visualizations, while awesome-charting is a curated list of various charting libraries. three.js offers more advanced 3D capabilities but has a steeper learning curve, whereas the libraries listed in awesome-charting are generally simpler to use for basic charts and graphs. Choose three.js for complex 3D visualizations, and refer to awesome-charting for a variety of 2D charting options.
Highcharts JS, the JavaScript charting framework
Pros of Highcharts
- More comprehensive and feature-rich charting library
- Extensive documentation and examples
- Strong community support and regular updates
Cons of Highcharts
- Commercial license required for most use cases
- Steeper learning curve due to its extensive API
- Larger file size, which may impact page load times
Code Comparison
Highcharts:
Highcharts.chart('container', {
series: [{
data: [1, 2, 3, 4, 5]
}]
});
Awesome-charting (using Chart.js as an example):
new Chart(ctx, {
type: 'line',
data: {
datasets: [{
data: [1, 2, 3, 4, 5]
}]
}
});
Summary
Highcharts is a powerful, feature-rich charting library with extensive documentation and support. However, it requires a commercial license and has a steeper learning curve. Awesome-charting is a curated list of various charting libraries, offering more flexibility in choosing a solution that fits specific needs, but may lack the cohesiveness and comprehensive features of a single, dedicated library like Highcharts.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
A curated list of chart and dataviz resources that developers may find useful. Focused on relevant and currently active JavaScript charting libraries for different use cases. Ordered alphabetically in each category.
Inspired by the Awesome thing.
Brought to you by
A declarative, efficient, and simple JavaScript library for building responsive charts
Table of Contents
- Commercial Libraries
- Free and Open Source Libraries
- Free Libraries
- Framework-Specific Libraries
- Data Visualization Resources
Commercial Libraries
- amCharts - Three libraries for traditional charts, stock, and maps. Features a hand-drawn style theme option.
- AnyChart - Set of products for charting different types of data. Has a special Oracle Apex integration option.
- CanvasJS - A tight set of chart types in a library with a small file size. Different looking default theme than other commercial libraries.
- FusionCharts - Charting library with a strong maps component.
- Highcharts - A series of charting libraries for a variety of uses. Can be compatible back to IE6.
- JSCharting - Integrated suite of charting libraries with traditional charts types plus maps, stock, Gantt, grid and org charts in one package.
- Kendo UI - Premium charting library with native UI components available for Angular, React, and Vue.
- ZingChart - Built to render large data sets other libraries can't handle. Super customizable styling and new features added often. Everything in one modular library.
Free and Open Source Libraries
- apexcharts.js - A JavaScript Chart Library with simple API.
- Billboard.js - a fork of C3 that tracks D3 releases more closely.
- C3.js - D3 based reusable chart library.
- Chart.js - Tiny library (11kb!) including core chart types.
- Charts.css - CSS data visualization framework.
- Chartist - Simple, lightweight chart library that uses SVG to render the chart, and CSS to style it.
- Chartkick - JavaScript charts with one line of Ruby.
- D3.js - Allows the user to manipulate documents based on data to render charts in SVG.
- dc.js - D3 Library with crossfilter support
- dygraphs - Interactive zoomable time series charts.
- ECharts - A powerful charting and visualization library for browser.
- EJSChart - enterprise ready charting library.
- Graphosaurus - 3D graph viewer powered by WebGL (three.js)
- lightweight-charts - Financial lightweight charts built with HTML5 canvas
- Morris.js - Simple API to render line, bar, area, and donut charts
- Plotly - Built on top of d3 and stack.gl, allowing users to create basic charts and SVG maps.
- Plottable - Library with OOP style syntax to build charts.
- QuickChart - Web API that renders static chart images.
- rgraph - 2D/3D javascript charts with google sheets import capabilites.
- sigma.js - Graphs / Network diagram library built with canvas.
- Smoothie Charts - JavaScript charts for realtime streaming data.
- TauCharts - Unique syntax that lets the developer describe the data using DSL. Has the ability to create facets.
- μPlot - A small (< 25 KB min), fast chart for time series, lines, areas, ohlc & bars.
- uvCharts - JavaScript Charting library built using d3.js
- vis.js - Network diagrams, descriptive timelines with labels, and has 3D graphs.
- reaviz - Modular chart component library for React.
- reaflow - Modular diagram engine for build static or interactive editors.
Free Libraries
- Google Charts - Maps are dialed in (of course) and some cool animation options. Extensive docs and use community (forum).
Framework-Specific Libraries
Angular
- Angular-Chart- Simple API to render line, bar, area, and donut charts
- n3-charts - Easy to use library written with AngularJS, rendering charts with D3.
- Angular-scale - Simple and lightweight library for creating line charts
Ember
- Ember Charts - Five basic chart types ready to go in Ember.js projects.
jQuery
- Flot - A JavaScript charting library for jQuery. Contains useful chart types but looks like it may no longer be in active development.
- jqPlot - Open source jQuery plugin for drawing charts. Contains many commonly used features but may use different naming conventions for these items.
- jqxChart - Plenty of chart types rendering in SVG, Canvas, and VML.
- JQuery-linechart - Simple and lightweight library for creating line charts
Lit-html
- lit-line - {fast, small, interactive, fully responsive} Line Chart web component build on top of lit-html.
React
- nivo - React components to easily build dataviz apps, built on top of D3.
- react-vis - a composable visualization system by Uber
- vx collection of reusable low-level visualization components, on top of d3
- Potion - Low-level building blocks for constructing animated visualizations with React & D3.
- react-chart-js - React wrapper for Chart.js
- react-d3 - Charting library that relies on React for generating SVG markup and d3 to calculate path values.
- react-muze - React wrapper for muze (free data visualization library for creating exploratory data visualizations in browser, using WebAssembly)
- react-vis - A collection of React components to render common data visualization charts
- recharts - Redefined chart library built with React and D3
- Victory - A collection of composable React components for building interactive data visualizations
Data Visualization Resources
- Dataviz Catalogue - A place to go when you're wondering which chart type is best. A project by Severino Ribecca.
- Evergreen Data - Information and opinions on presenting data more effectively.
- Flowing Data - A resource on maps, visualizations, stats, and design by Nathan Yau, formerly of the New York Times.
- Junk Charts - Dataviz critic (and Columbia professor) Kaiser Fung breaks down data visualizations to identify what is wrong and recommends ways to make them better.
- The Functional Art - Noted data visualization author and professor Aberto Cairo's blog on dataviz trends and best practices.
- Visualizing Data - Dataviz consultant Andy Kirk compiles examples, resources, and reference materials on the subject of charting and visualization.
- Well Formed Data - Thought pieces on information visualization and design by Moritz Stefaner previously of the World Economic Forum.
Top Related Projects
Simple HTML5 Charts using the <canvas> tag
Bring data to life with SVG, Canvas and HTML. :bar_chart::chart_with_upwards_trend::tada:
Open-source JavaScript charting library behind Plotly and Dash
Apache ECharts is a powerful, interactive charting and data visualization library for browser
JavaScript 3D Library.
Highcharts JS, the JavaScript charting framework
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot