amcharts4
The most advanced amCharts charting library for JavaScript and TypeScript apps.
Top Related Projects
Highcharts JS, the JavaScript charting framework
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.
Quick Overview
amCharts 4 is a powerful JavaScript/TypeScript library for creating interactive and customizable charts and maps. It offers a wide range of chart types, from basic line and bar charts to complex hierarchical treemaps and network graphs, making it suitable for various data visualization needs.
Pros
- Extensive chart types and customization options
- Responsive and mobile-friendly designs
- Excellent documentation and examples
- Active development and community support
Cons
- Steeper learning curve compared to simpler charting libraries
- Large file size, which may impact page load times
- Commercial license required for some features and removal of branding
- Performance can be slower with large datasets
Code Examples
Creating a simple line chart:
// Create chart instance
let chart = am4core.create("chartdiv", am4charts.XYChart);
// Add data
chart.data = [{
"date": "2021-01-01",
"value": 100
}, {
"date": "2021-01-02",
"value": 120
}, {
"date": "2021-01-03",
"value": 110
}];
// Create axes
let dateAxis = chart.xAxes.push(new am4charts.DateAxis());
let valueAxis = chart.yAxes.push(new am4charts.ValueAxis());
// Create series
let series = chart.series.push(new am4charts.LineSeries());
series.dataFields.valueY = "value";
series.dataFields.dateX = "date";
Creating a pie chart:
// Create chart instance
let chart = am4core.create("chartdiv", am4charts.PieChart);
// Add data
chart.data = [{
"category": "Category A",
"value": 501.9
}, {
"category": "Category B",
"value": 301.9
}, {
"category": "Category C",
"value": 201.1
}];
// Add and configure Series
let pieSeries = chart.series.push(new am4charts.PieSeries());
pieSeries.dataFields.value = "value";
pieSeries.dataFields.category = "category";
Creating a map chart:
// Create map instance
let chart = am4core.create("chartdiv", am4maps.MapChart);
// Set map definition
chart.geodata = am4geodata_worldLow;
// Create map polygon series
let polygonSeries = chart.series.push(new am4maps.MapPolygonSeries());
// Make map load polygon (like country names) data from GeoJSON
polygonSeries.useGeodata = true;
// Configure series
let polygonTemplate = polygonSeries.mapPolygons.template;
polygonTemplate.tooltipText = "{name}";
polygonTemplate.fill = am4core.color("#74B266");
Getting Started
- Include amCharts 4 in your project:
<script src="https://cdn.amcharts.com/lib/4/core.js"></script>
<script src="https://cdn.amcharts.com/lib/4/charts.js"></script>
<script src="https://cdn.amcharts.com/lib/4/themes/animated.js"></script>
- Create a div element to hold the chart:
<div id="chartdiv" style="width: 100%; height: 500px;"></div>
- Initialize and create your chart using JavaScript (see code examples above).
Competitor Comparisons
Highcharts JS, the JavaScript charting framework
Pros of Highcharts
- More extensive documentation and examples
- Larger community and ecosystem
- Better performance with large datasets
Cons of Highcharts
- Commercial license required for most use cases
- Steeper learning curve for complex customizations
- Larger file size, which may impact load times
Code Comparison
Highcharts:
Highcharts.chart('container', {
series: [{
data: [1, 2, 3, 4, 5]
}]
});
amCharts 4:
am4core.ready(function() {
let chart = am4core.create("chartdiv", am4charts.XYChart);
chart.data = [{value: 1}, {value: 2}, {value: 3}, {value: 4}, {value: 5}];
});
Both libraries offer powerful charting capabilities, but they differ in their approach to initialization and data structure. Highcharts uses a more concise syntax, while amCharts 4 requires a bit more setup code.
Highcharts is generally considered more feature-rich and performant, especially for complex charts and large datasets. However, it comes with licensing costs for commercial use. amCharts 4, on the other hand, offers a free version with more permissive licensing terms, making it a popular choice for open-source projects and smaller applications.
The choice between these libraries often depends on specific project requirements, budget constraints, and the level of customization needed.
Simple HTML5 Charts using the <canvas> tag
Pros of Chart.js
- Lightweight and simple to use, with a smaller learning curve
- Free and open-source, suitable for both commercial and non-commercial projects
- Responsive and mobile-friendly out of the box
Cons of Chart.js
- Limited chart types and customization options compared to amCharts 4
- Less powerful for complex data visualizations and interactive features
- Smaller ecosystem and fewer plugins available
Code Comparison
Chart.js:
new Chart(ctx, {
type: 'bar',
data: {
labels: ['Red', 'Blue', 'Yellow', 'Green', 'Purple', 'Orange'],
datasets: [{
label: '# of Votes',
data: [12, 19, 3, 5, 2, 3]
}]
}
});
amCharts 4:
let chart = am4core.create("chartdiv", am4charts.XYChart);
chart.data = [{
"country": "USA",
"visits": 2025
}, {
"country": "China",
"visits": 1882
}];
Both libraries offer straightforward ways to create charts, but amCharts 4 provides more advanced features and customization options at the cost of a steeper learning curve and larger file size. Chart.js is ideal for simpler projects, while amCharts 4 excels in complex, interactive visualizations.
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, resulting in extensive documentation and resources
- Lightweight and modular, enabling users to include only necessary components
Cons of d3
- Steeper learning curve, requiring more time and effort to master
- Lower-level API, necessitating more code for basic charts and graphs
- Less out-of-the-box functionality compared to amCharts 4
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);
amCharts 4:
let chart = am4core.create("chartdiv", am4charts.XYChart);
chart.data = data;
let categoryAxis = chart.xAxes.push(new am4charts.CategoryAxis());
categoryAxis.dataFields.category = "category";
let valueAxis = chart.yAxes.push(new am4charts.ValueAxis());
let series = chart.series.push(new am4charts.ColumnSeries());
series.dataFields.valueY = "value";
series.dataFields.categoryX = "category";
Open-source JavaScript charting library behind Plotly and Dash
Pros of plotly.js
- More extensive documentation and examples
- Larger community and ecosystem
- Better support for scientific and statistical visualizations
Cons of plotly.js
- Steeper learning curve for complex visualizations
- Larger file size, which may impact page load times
- Less customizable styling options for some chart types
Code Comparison
plotly.js:
Plotly.newPlot('myDiv', [{
x: [1, 2, 3, 4],
y: [10, 15, 13, 17],
type: 'scatter'
}]);
amCharts 4:
let chart = am4core.create("chartdiv", am4charts.XYChart);
chart.data = [{
x: 1,
y: 10
}, {
x: 2,
y: 15
}, {
x: 3,
y: 13
}, {
x: 4,
y: 17
}];
Both libraries offer powerful charting capabilities, but they differ in their approach and focus. plotly.js excels in scientific and statistical visualizations, while amCharts 4 provides more flexibility in design and animation. The code comparison shows that plotly.js has a more concise syntax for basic charts, while amCharts 4 requires more setup but offers greater control over chart elements.
Apache ECharts is a powerful, interactive charting and data visualization library for browser
Pros of ECharts
- Open-source and free to use, with no licensing restrictions
- Extensive documentation and community support
- Supports a wide range of chart types and customization options
Cons of ECharts
- Steeper learning curve for complex visualizations
- Larger file size compared to AmCharts 4
Code Comparison
ECharts:
option = {
xAxis: {
type: 'category',
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
},
yAxis: {
type: 'value'
},
series: [{
data: [120, 200, 150, 80, 70, 110, 130],
type: 'bar'
}]
};
AmCharts 4:
let chart = am4core.create("chartdiv", am4charts.XYChart);
chart.data = [{
"day": "Mon",
"value": 120
}, {
"day": "Tue",
"value": 200
}];
let categoryAxis = chart.xAxes.push(new am4charts.CategoryAxis());
categoryAxis.dataFields.category = "day";
let valueAxis = chart.yAxes.push(new am4charts.ValueAxis());
let series = chart.series.push(new am4charts.ColumnSeries());
series.dataFields.valueY = "value";
series.dataFields.categoryX = "day";
Both libraries offer powerful charting capabilities, but ECharts provides more flexibility and options for advanced visualizations, while AmCharts 4 may be easier to get started with for simpler charts.
JavaScript 3D Library.
Pros of three.js
- Powerful 3D rendering capabilities for complex visualizations
- Large, active community with extensive documentation and examples
- Versatile, supporting various 3D use cases beyond data visualization
Cons of three.js
- Steeper learning curve for beginners compared to AmCharts 4
- Requires more custom coding for basic chart types
- Less focused on traditional data visualization and charting
Code Comparison
three.js (3D scene setup):
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);
AmCharts 4 (basic chart setup):
let chart = am4core.create("chartdiv", am4charts.XYChart);
chart.data = [{
"country": "USA",
"visits": 2025
}, {
"country": "China",
"visits": 1882
}];
The code comparison illustrates the different focus of each library. three.js requires more setup for a basic 3D scene, while AmCharts 4 provides a simpler API for creating standard charts. three.js offers more flexibility for custom 3D visualizations, whereas AmCharts 4 is optimized for common chart types and data visualization tasks.
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
amCharts 4
This is an official repository for amCharts 4 - the most advanced JavaScript dataviz library ever.
For a short overview of features, visit this page.
Contents
| Directory | Description |
|---|---|
| /dist/ember/ | Official Ember plugin for amCharts 4 |
| /dist/es2015/ | Compiled ES2015 modules |
| /dist/script/ | Compiled standalone JavaScript files |
| /src/ | TypeScript sources for amCharts 4 |
Documentation
For extensive documentation, including getting started tutorials, as well as class reference visit V4 documentation website.
Other ways to get amCharts 4
Related packages
This package inlcudes MapChart (geographical maps) functionality. However,
it does not include geodata itself (map files) needed to instantiate the maps.
Those are available via separate package:
License
If you have a commercial amCharts 4 license, this software is covered by your license, which supersedes any other license bundled with this package.
If you don't have a commercial license, the use of this software is covered by a freeware license. Refer to included LICENSE file. The license is also available online.
Changelog
Questions?
Found a bug?
Open an issue.
How to build
Run yarn install and then yarn run build. The compiled code will be in the dist folder.
Top Related Projects
Highcharts JS, the JavaScript charting framework
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.
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