dygraphs
Interactive visualizations of time series using JavaScript and the HTML canvas tag
Top Related Projects
Open-source JavaScript charting library behind Plotly and Dash
Simple HTML5 Charts using the <canvas> tag
Bring data to life with SVG, Canvas and HTML. :bar_chart::chart_with_upwards_trend::tada:
JavaScript 3D Library.
Highcharts JS, the JavaScript charting framework
Quick Overview
Dygraphs is a fast, flexible open-source JavaScript charting library. It's particularly well-suited for displaying dense time series data and allows users to explore and interact with large datasets. Dygraphs emphasizes dynamic, interactive graphs with pan/zoom capabilities and mouseover effects.
Pros
- Highly performant, capable of handling millions of data points
- Extensive customization options for appearance and behavior
- Built-in support for error bars, annotations, and multiple Y-axes
- Works well on both desktop and mobile devices
Cons
- Learning curve can be steep for advanced customizations
- Limited chart types compared to some other libraries (primarily focused on line and bar charts)
- Documentation, while comprehensive, can be difficult to navigate at times
- Styling can be challenging, especially for complex layouts
Code Examples
- Basic line chart:
new Dygraph(document.getElementById("graphdiv"),
"Date,Temperature\n" +
"2008-05-07,75\n" +
"2008-05-08,70\n" +
"2008-05-09,80\n",
{ title: 'Daily Temperature' }
);
- Multiple series with custom colors:
new Dygraph(document.getElementById("graphdiv"),
[
[new Date("2008/05/07"), 75, 65],
[new Date("2008/05/08"), 70, 60],
[new Date("2008/05/09"), 80, 70]
],
{
labels: ['Date', 'High', 'Low'],
colors: ['#00A000', '#0000A0'],
title: 'High and Low Temperatures'
}
);
- Synchronizing two charts:
var g1 = new Dygraph(document.getElementById("div1"), data1, {});
var g2 = new Dygraph(document.getElementById("div2"), data2, {});
var sync = Dygraph.synchronize(g1, g2, {
selection: true,
zoom: true,
range: false
});
Getting Started
To use Dygraphs in your project, follow these steps:
- Include the Dygraphs library in your HTML file:
<script src="https://cdnjs.cloudflare.com/ajax/libs/dygraph/2.1.0/dygraph.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/dygraph/2.1.0/dygraph.min.css" />
- Create a div element to hold your chart:
<div id="graphdiv"></div>
- Initialize a Dygraph with your data:
new Dygraph(document.getElementById("graphdiv"),
"Date,Value\n" +
"2021-01-01,10\n" +
"2021-01-02,15\n" +
"2021-01-03,13\n",
{ title: 'My First Chart' }
);
This will create a basic line chart with the provided data. You can then customize the chart further using various options and methods provided by the Dygraphs API.
Competitor Comparisons
Open-source JavaScript charting library behind Plotly and Dash
Pros of plotly.js
- More extensive chart types and customization options
- Built-in support for 3D visualizations
- Active development with frequent updates and new features
Cons of plotly.js
- Larger file size and potentially slower performance for simple charts
- Steeper learning curve due to more complex API
Code Comparison
plotly.js:
Plotly.newPlot('myDiv', [{
x: [1, 2, 3, 4],
y: [10, 15, 13, 17],
type: 'scatter'
}]);
dygraphs:
new Dygraph(document.getElementById("graphdiv"), [
[1, 10],
[2, 15],
[3, 13],
[4, 17]
]);
Summary
plotly.js offers a wider range of chart types and customization options, including 3D visualizations, making it suitable for complex data visualization needs. It has an active development community and frequent updates. However, it comes with a larger file size and may have slower performance for simple charts compared to dygraphs. The API is more complex, resulting in a steeper learning curve.
dygraphs, on the other hand, is lightweight and focuses on time-series charts. It has a simpler API and faster performance for basic charts but lacks the extensive features and chart types offered by plotly.js.
Choose plotly.js for diverse chart types and advanced customization, or dygraphs for simpler, performance-focused time-series visualizations.
Simple HTML5 Charts using the <canvas> tag
Pros of Chart.js
- Easier to use and more beginner-friendly
- Wider variety of chart types out of the box
- More modern and visually appealing default styles
Cons of Chart.js
- Less suitable for large datasets or real-time data
- Fewer options for customization and fine-tuning
Code Comparison
Chart.js:
new Chart(ctx, {
type: 'line',
data: {
labels: ['Jan', 'Feb', 'Mar'],
datasets: [{
data: [10, 20, 30]
}]
}
});
Dygraphs:
new Dygraph(div, [
[new Date("2023-01-01"), 10],
[new Date("2023-02-01"), 20],
[new Date("2023-03-01"), 30]
], {
labels: ['Date', 'Value']
});
Chart.js uses a more declarative approach with a configuration object, while Dygraphs uses a more data-centric approach. Chart.js is generally easier to set up for simple charts, but Dygraphs offers more control over data handling and is better suited for time-series data and large datasets.
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 a wide range of complex visualizations
- Large and active community, with extensive documentation and examples
- Supports a broader range of chart types and data visualization techniques
Cons of D3
- Steeper learning curve, especially for beginners
- Requires more code to create basic charts compared to Dygraphs
- Lower-level API, which can lead to more verbose implementations
Code Comparison
Dygraphs:
new Dygraph(document.getElementById("graphdiv"),
"Date,Temperature\n" +
"2008-05-07,75\n" +
"2008-05-08,70\n" +
"2008-05-09,80\n"
);
D3:
const svg = d3.select("#chart")
.append("svg")
.attr("width", width)
.attr("height", height);
svg.selectAll("rect")
.data(data)
.enter()
.append("rect")
.attr("x", (d, i) => i * 70)
.attr("y", (d, i) => height - 10 * d)
.attr("width", 65)
.attr("height", (d, i) => d * 10);
The code examples demonstrate that Dygraphs requires less code for basic charts, while D3 offers more granular control over chart elements.
JavaScript 3D Library.
Pros of three.js
- Powerful 3D rendering capabilities for complex visualizations
- Large, active community with extensive documentation and examples
- Supports a wide range of 3D features, including animations and VR/AR
Cons of three.js
- Steeper learning curve due to its complexity and 3D-specific concepts
- Larger file size and potentially higher performance overhead
- May be overkill for simple 2D data visualizations
Code Comparison
three.js (3D scene creation):
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);
dygraphs (2D chart creation):
new Dygraph(document.getElementById("graphdiv"),
"Date,Temperature\n" +
"2008-05-07,75\n" +
"2008-05-08,70\n" +
"2008-05-09,80",
{legend: 'always', title: 'Daily Temperatures'}
);
three.js is better suited for complex 3D visualizations and interactive experiences, while dygraphs excels in creating simple, interactive 2D charts with a focus on time-series data. three.js offers more flexibility and power but requires more setup and knowledge of 3D graphics concepts. dygraphs provides a simpler API for quickly creating charts with built-in interactivity and is more lightweight, making it ideal for data-driven 2D visualizations.
Highcharts JS, the JavaScript charting framework
Pros of Highcharts
- More extensive feature set with a wide range of chart types and customization options
- Better documentation and community support
- Smoother animations and interactivity
Cons of Highcharts
- Commercial license required for most use cases
- Larger file size and potentially slower performance for simple charts
- Steeper learning curve due to more complex API
Code Comparison
Highcharts:
Highcharts.chart('container', {
series: [{
data: [1, 2, 3, 4, 5]
}]
});
Dygraphs:
new Dygraph(document.getElementById("container"), [
[1, 1], [2, 2], [3, 3], [4, 4], [5, 5]
]);
Summary
Highcharts offers a more comprehensive charting solution with extensive features and better documentation, but comes at the cost of a commercial license and potentially higher complexity. Dygraphs, on the other hand, is open-source and simpler to use for basic charts, but may lack some advanced features and polish found in Highcharts. The choice between the two depends on project requirements, budget constraints, and the level of chart complexity needed.
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
dygraphs JavaScript charting library
The dygraphs JavaScript library produces interactive, zoomable charts of time series:
Learn more about it at dygraphs.com.
Get help with dygraphs on Stack Overflow (preferred) and Google Groups.
Features
- Plots time series without using an external server or Flash
- Supports error bands around data series
- Interactive pan and zoom
- Displays values on mouseover
- Adjustable averaging period
- Extensive set of options for customization.
- Compatible with the Google Visualization API
Minimal Example
<html>
<head>
<script type="text/javascript" src="dygraph.js"></script>
<link rel="stylesheet" type="text/css" href="dygraph.css" />
</head>
<body>
<div id="graphdiv"></div>
<script type="text/javascript"><!--//--><![CDATA[//><!--
Dygraph.onDOMready(function onDOMready() { // or jQuery $() etc.
g = new Dygraph(
document.getElementById("graphdiv"), // containing div
"Date,Temperature\n" + // the data series
"2008-05-07,75\n" +
"2008-05-08,70\n" +
"2008-05-09,80\n",
{ } // the options
);
});
//--><!]]></script>
</body>
</html>
Learn more by reading the tutorial and seeing demonstrations of what
dygraphs can do in the gallery. You can get dygraph.js
and dygraph.css
from UNPKG, cdnjs or from NPM (see below).
Usage with a module loader
Get dygraphs from NPM:
npm install dygraphs
Do not install from the git repository! Always use a tarball install,
which contains the prebuilt files; npm
fails to build the source code
on install from github. (The tarball from the GitHub Registry is fine.)
You'll find pre-built JS & CSS files in node_modules/dygraphs/dist/
. If you're
using a module bundler like browserify or webpack, you can import dygraphs:
import Dygraph from 'dygraphs';
// or: const Dygraph = require('dygraphs');
const g = new Dygraph('graphdiv', data, { /* options */ });
Check out the dygraphs-es6 repo for a fully-worked example.
Development
To get going, install the following Debian packagesâ¦
jq
mksh
pax
python3
⦠clone the repo and run:
npm install
npm run build-jsonly
Then open tests/demo.html
in your browser.
Read more about the dygraphs development process in the developer guide.
License(s)
dygraphs is available under the MIT license, included in LICENSE.txt.
Top Related Projects
Open-source JavaScript charting library behind Plotly and Dash
Simple HTML5 Charts using the <canvas> tag
Bring data to life with SVG, Canvas and HTML. :bar_chart::chart_with_upwards_trend::tada:
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