We can make creating charts on a web page easy with Chart.js.
In this article, we’ll look at how to create charts with Chart.js.
Scatter Chart
We can create a scatter chart with Chart.js
It’s a line chart with the x-axis changed to a linear axis.
For example, we can create one by writing:
var ctx = document.getElementById('myChart').getContext('2d');
new Chart(ctx, {
type: 'scatter',
data: {
datasets: [{
label: 'Scatter Dataset',
backgroundColor: 'green',
data: [{
x: -10,
y: 0
}, {
x: 0,
y: 10
}, {
x: 10,
y: 5
}]
}]
},
options: {
scales: {
xAxes: [{
type: 'linear',
position: 'bottom'
}]
}
}
});
We have the data
property with an array of objects with the x
and y
properties.
x
has the x coordinate, and y
has the y coordinate on the chart.
The other properties are the same as the line chart.
We can get the options by going to https://www.chartjs.org/docs/latest/charts/line.html#dataset-properties.
Area Charts
Line and radar charts support the fill
option instead of the dataset object which can be used to create an area between 2 datasets and the boundary.
We can add the fill with the fill
property.
For example, we can write:
var ctx = document.getElementById('myChart').getContext('2d');
var myChart = new Chart(ctx, {
type: 'line',
data: {
labels: ['Monday', 'Tuesday', 'Wednesday'],
datasets: [{
label: '# of Votes',
data: [12, 19, 3],
borderColor: 'green',
fill: false,
borderWidth: 1
}]
},
options: {
scales: {
yAxes: [{
ticks: {
beginAtZero: true
}
}]
}
}
});
to disable the fill with the fill
property set to false
.
Also, we can write:
var ctx = document.getElementById('myChart').getContext('2d');
var myChart = new Chart(ctx, {
type: 'line',
data: {
labels: ['Monday', 'Tuesday', 'Wednesday'],
datasets: [{
label: '# of foo',
data: [12, 19, 3],
borderColor: 'green',
fill: '+2',
borderWidth: 1
},
{
label: '# of bar',
data: [1, 4, 3],
borderColor: 'red',
fill: false,
borderWidth: 1
},
{
label: '# of baz',
data: [2, 9, 13],
borderColor: 'blue',
fill: false,
borderWidth: 1
}
]
},
options: {
scales: {
yAxes: [{
ticks: {
beginAtZero: true
}
}]
}
}
});
to add fill between dataset 1 and dataset 3 with the '+2'
option.
We’ll see the fill between the green and blue line.
The line color is set with the borderWidth
property.
We can also set it to a negative number to make the fill between a later dataset and a dataset that’s added earlier.
For example, we can write:
var ctx = document.getElementById('myChart').getContext('2d');
var myChart = new Chart(ctx, {
type: 'line',
data: {
labels: ['Monday', 'Tuesday', 'Wednesday'],
datasets: [{
label: '# of foo',
data: [12, 19, 3],
borderColor: 'green',
fill: false,
borderWidth: 1
},
{
label: '# of bar',
data: [1, 4, 3],
borderColor: 'red',
fill: false,
borderWidth: 1
},
{
label: '# of baz',
data: [2, 9, 13],
borderColor: 'blue',
fill: '-2',
borderWidth: 1
}
]
},
options: {
scales: {
yAxes: [{
ticks: {
beginAtZero: true
}
}]
}
}
});
We can also set fill
to 'origin'
to make the fill to the origin.
There’s also the propagate
option that makes the fill area recursively extends to the visible target defined by the fill
value of hidden dataset targets:
var myChart = new Chart(ctx, {
type: 'line',
data: {
labels: ['Monday', 'Tuesday', 'Wednesday'],
datasets: [{
label: '# of foo',
data: [12, 19, 3],
borderColor: 'green',
fill: false,
borderWidth: 1
},
{
label: '# of bar',
data: [1, 4, 3],
borderColor: 'red',
fill: false,
borderWidth: 1
},
{
label: '# of baz',
data: [2, 9, 13],
borderColor: 'blue',
fill: '-2',
borderWidth: 1
}
]
},
options: {
scales: {
yAxes: [{
ticks: {
beginAtZero: true
}
}]
},
plugins: {
filler: {
propagate: true
}
}
}
});
This way, if a dataset is hidden, then the fill will propagate to the nearest dataset that’s displayed.
Conclusion
We can create scatter charts and line charts will a fill background with Chart.js