Charts
Bootstrap 5 Charts
MDB charts are visual representations of data. They are responsive and easy to customize. At your disposal are eight types of charts with multiple options for customization.
Note: Read the API tab to find all available options and advanced customization.
Note 2: See also advanced charts documentation to see an implementation of the advanced options.
*
*
UMD autoinits are enabled
by default. This means that you don't need to initialize
the component manually. However if you are using MDBootstrap ES format then you should pass
the required components to the initMDB
method.
Video tutorial
Bar chart
You can initialize simple charts with data-mdb-attributes
- it doesn't require
any additional JS code.
Note: This method allows only one dataset - more complicated charts require JavaScript initialization.
Via data-mdb-attributes:
<canvas
data-mdb-chart-init
data-mdb-chart="bar"
data-mdb-dataset-label="Traffic"
data-mdb-labels="['Monday', 'Tuesday' , 'Wednesday' , 'Thursday' , 'Friday' , 'Saturday' , 'Sunday ']"
data-mdb-dataset-data="[2112, 2343, 2545, 3423, 2365, 1985, 987]"
></canvas>
// Initialization for ES Users
import { Chart, initMDB } from 'mdb-ui-kit/js/chart.es.min.js'
initMDB({ Chart });
The same effect achieved via Javascript initialization:
<canvas id="bar-chart"></canvas>
// Initialization for ES Users
import { Chart, initMDB } from 'mdb-ui-kit/js/chart.es.min.js'
initMDB({ Chart });
// Chart
const dataBar = {
type: 'bar',
data: {
labels: ['Monday', 'Tuesday' , 'Wednesday' , 'Thursday' , 'Friday' , 'Saturday' , 'Sunday '],
datasets: [
{
label: 'Traffic',
data: [2112, 2343, 2545, 3423, 2365, 1985, 987],
},
],
},
};
new Chart(document.getElementById('bar-chart'), dataBar);
// Chart
const dataBar = {
type: 'bar',
data: {
labels: ['Monday', 'Tuesday' , 'Wednesday' , 'Thursday' , 'Friday' , 'Saturday' , 'Sunday '],
datasets: [
{
label: 'Traffic',
data: [2112, 2343, 2545, 3423, 2365, 1985, 987],
},
],
},
};
new mdb.Chart(document.getElementById('bar-chart'), dataBar);
Line chart
To use our minimalistic line chart, set the type
option to line
.
Via data-mdb-attributes:
<canvas
data-mdb-chart-init
data-mdb-chart="line"
data-mdb-dataset-label="Traffic"
data-mdb-labels="['Monday', 'Tuesday' , 'Wednesday' , 'Thursday' , 'Friday' , 'Saturday' , 'Sunday ']"
data-mdb-dataset-data="[2112, 2343, 2545, 3423, 2365, 1985, 987]"
></canvas>
// Initialization for ES Users
import { Chart, initMDB } from 'mdb-ui-kit/js/chart.es.min.js'
initMDB({ Chart });
Via JavaScript:
<canvas id="line-chart"></canvas>
// Initialization for ES Users
import { Chart, initMDB } from 'mdb-ui-kit/js/chart.es.min.js';
initMDB({ Chart });
// Chart
const dataLine = {
type: 'line',
data: {
labels: ['Monday', 'Tuesday' , 'Wednesday' , 'Thursday' , 'Friday' , 'Saturday' , 'Sunday '],
datasets: [
{
label: 'Traffic',
data: [2112, 2343, 2545, 3423, 2365, 1985, 987],
},
],
},
};
new Chart(document.getElementById('line-chart'), dataLine);
// Chart
const dataLine = {
type: 'line',
data: {
labels: ['Monday', 'Tuesday' , 'Wednesday' , 'Thursday' , 'Friday' , 'Saturday' , 'Sunday '],
datasets: [
{
label: 'Traffic',
data: [2112, 2343, 2545, 3423, 2365, 1985, 987],
},
],
},
};
new mdb.Chart(document.getElementById('line-chart'), dataLine);
Bar chart horizontal
Change the orientation of your bar chart from vertical to horizontal by setting
the indexAxis
option to 'y'
.
<canvas id="bar-chart-horizontal"></canvas>
// Initialization for ES Users
import { Chart, initMDB } from 'mdb-ui-kit/js/chart.es.min.js';
initMDB({ Chart });
// Chart
const dataBarHorizontal = {
type: 'bar',
data: {
labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
datasets: [
{
label: 'Traffic',
data: [30, 15, 62, 65, 61, 65, 40],
},
],
},
};
const optionsBarHorizontal = {
options: {
indexAxis: 'y',
scales: {
x: {
stacked: true,
grid: {
display: true,
borderDash: [2],
zeroLineColor: 'rgba(0,0,0,0)',
zeroLineBorderDash: [2],
zeroLineBorderDashOffset: [2],
},
ticks: {
color: 'rgba(0,0,0, 0.5)',
},
},
y: {
stacked: true,
grid: {
display: false,
},
ticks: {
color: 'rgba(0,0,0, 0.5)',
},
},
},
},
};
new Chart(document.getElementById('bar-chart-horizontal'), dataBarHorizontal, optionsBarHorizontal);
// Chart
const dataBarHorizontal = {
type: 'bar',
data: {
labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
datasets: [
{
label: 'Traffic',
data: [30, 15, 62, 65, 61, 65, 40],
},
],
},
};
const optionsBarHorizontal = {
options: {
indexAxis: 'y',
scales: {
x: {
stacked: true,
grid: {
display: true,
borderDash: [2],
zeroLineColor: 'rgba(0,0,0,0)',
zeroLineBorderDash: [2],
zeroLineBorderDashOffset: [2],
},
ticks: {
color: 'rgba(0,0,0, 0.5)',
},
},
y: {
stacked: true,
grid: {
display: false,
},
ticks: {
color: 'rgba(0,0,0, 0.5)',
},
},
},
},
};
new mdb.Chart(document.getElementById('bar-chart-horizontal'), dataBarHorizontal, optionsBarHorizontal);
Pie chart
A chart with the type pie
splits the circle into several pieces to represent a
dataset's values as an area's percentage.
Via data-mdb-attributes:
<canvas
data-mdb-chart-init
data-mdb-chart="pie"
data-mdb-dataset-label="Traffic"
data-mdb-labels="['Monday', 'Tuesday' , 'Wednesday' , 'Thursday' , 'Friday' , 'Saturday' , 'Sunday ']"
data-mdb-dataset-data="[2112, 2343, 2545, 3423, 2365, 1985, 987]"
data-mdb-dataset-background-color="['rgba(63, 81, 181, 0.5)', 'rgba(77, 182, 172, 0.5)', 'rgba(66, 133, 244, 0.5)', 'rgba(156, 39, 176, 0.5)', 'rgba(233, 30, 99, 0.5)', 'rgba(66, 73, 244, 0.4)', 'rgba(66, 133, 244, 0.2)']"
></canvas>
// Initialization for ES Users
import { Chart, initMDB } from 'mdb-ui-kit/js/chart.es.min.js'
initMDB({ Chart });
Via JavaScript:
<canvas id="pie-chart"></canvas>
// Initialization for ES Users
import { Chart, initMDB } from 'mdb-ui-kit/js/chart.es.min.js';
initMDB({ Chart });
// Chart
const dataPie = {
type: 'pie',
data: {
labels: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday '],
datasets: [
{
label: 'Traffic',
data: [2112, 2343, 2545, 3423, 2365, 1985, 987],
backgroundColor: [
'rgba(63, 81, 181, 0.5)',
'rgba(77, 182, 172, 0.5)',
'rgba(66, 133, 244, 0.5)',
'rgba(156, 39, 176, 0.5)',
'rgba(233, 30, 99, 0.5)',
'rgba(66, 73, 244, 0.4)',
'rgba(66, 133, 244, 0.2)',
],
},
],
},
};
new Chart(document.getElementById('pie-chart'), dataPie);
// Chart
const dataPie = {
type: 'pie',
data: {
labels: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday '],
datasets: [
{
label: 'Traffic',
data: [2112, 2343, 2545, 3423, 2365, 1985, 987],
backgroundColor: [
'rgba(63, 81, 181, 0.5)',
'rgba(77, 182, 172, 0.5)',
'rgba(66, 133, 244, 0.5)',
'rgba(156, 39, 176, 0.5)',
'rgba(233, 30, 99, 0.5)',
'rgba(66, 73, 244, 0.4)',
'rgba(66, 133, 244, 0.2)',
],
},
],
},
};
new mdb.Chart(document.getElementById('pie-chart'), dataPie);
Doughnut chart
Another type of graph representing data as an area's percentage is a doughnut chart.
Via data-mdb-attributes:
<canvas
data-mdb-chart-init
data-mdb-chart="doughnut"
data-mdb-dataset-label="Traffic"
data-mdb-labels="['Monday', 'Tuesday' , 'Wednesday' , 'Thursday' , 'Friday' , 'Saturday' , 'Sunday ']"
data-mdb-dataset-data="[2112, 2343, 2545, 3423, 2365, 1985, 987]"
data-mdb-dataset-background-color="['rgba(63, 81, 181, 0.5)', 'rgba(77, 182, 172, 0.5)', 'rgba(66, 133, 244, 0.5)', 'rgba(156, 39, 176, 0.5)', 'rgba(233, 30, 99, 0.5)', 'rgba(66, 73, 244, 0.4)', 'rgba(66, 133, 244, 0.2)']"
></canvas>
// Initialization for ES Users
import { Chart, initMDB } from 'mdb-ui-kit/js/chart.es.min.js'
initMDB({ Chart });
Via JavaScript:
<canvas id="doughnut-chart"></canvas>
// Initialization for ES Users
import { Chart, initMDB } from 'mdb-ui-kit/js/chart.es.min.js';
initMDB({ Chart });
// Chart
const dataDoughnut = {
type: 'doughnut',
data: {
labels: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday '],
datasets: [
{
label: 'Traffic',
data: [2112, 2343, 2545, 3423, 2365, 1985, 987],
backgroundColor: [
'rgba(63, 81, 181, 0.5)',
'rgba(77, 182, 172, 0.5)',
'rgba(66, 133, 244, 0.5)',
'rgba(156, 39, 176, 0.5)',
'rgba(233, 30, 99, 0.5)',
'rgba(66, 73, 244, 0.4)',
'rgba(66, 133, 244, 0.2)',
],
},
],
},
};
new Chart(document.getElementById('doughnut-chart'), dataDoughnut);
// Chart
const dataDoughnut = {
type: 'doughnut',
data: {
labels: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday '],
datasets: [
{
label: 'Traffic',
data: [2112, 2343, 2545, 3423, 2365, 1985, 987],
backgroundColor: [
'rgba(63, 81, 181, 0.5)',
'rgba(77, 182, 172, 0.5)',
'rgba(66, 133, 244, 0.5)',
'rgba(156, 39, 176, 0.5)',
'rgba(233, 30, 99, 0.5)',
'rgba(66, 73, 244, 0.4)',
'rgba(66, 133, 244, 0.2)',
],
},
],
},
};
new mdb.Chart(document.getElementById('doughnut-chart'), dataDoughnut);
Polar chart
Polar area graph will split the circle into pieces with equal angles and different radius.
Via data-mdb-attributes:
<canvas
data-mdb-chart-init
data-mdb-chart="polarArea"
data-mdb-dataset-label="Traffic"
data-mdb-labels="['Monday', 'Tuesday' , 'Wednesday' , 'Thursday' , 'Friday' , 'Saturday' , 'Sunday ']"
data-mdb-dataset-data="[2112, 2343, 2545, 3423, 2365, 1985, 987]"
data-mdb-dataset-background-color="['rgba(63, 81, 181, 0.5)', 'rgba(77, 182, 172, 0.5)', 'rgba(66, 133, 244, 0.5)', 'rgba(156, 39, 176, 0.5)', 'rgba(233, 30, 99, 0.5)', 'rgba(66, 73, 244, 0.4)', 'rgba(66, 133, 244, 0.2)']"
></canvas>
// Initialization for ES Users
import { Chart, initMDB } from 'mdb-ui-kit/js/chart.es.min.js'
initMDB({ Chart });
Via JavaScript:
<canvas id="polar-area-chart"></canvas>
// Initialization for ES Users
import { Chart, initMDB } from 'mdb-ui-kit/js/chart.es.min.js';
initMDB({ Chart });
// Chart
const dataPolar = {
type: 'polarArea',
data: {
labels: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday '],
datasets: [
{
label: 'Traffic',
data: [2112, 2343, 2545, 3423, 2365, 1985, 987],
backgroundColor: [
'rgba(63, 81, 181, 0.5)',
'rgba(77, 182, 172, 0.5)',
'rgba(66, 133, 244, 0.5)',
'rgba(156, 39, 176, 0.5)',
'rgba(233, 30, 99, 0.5)',
'rgba(66, 73, 244, 0.4)',
'rgba(66, 133, 244, 0.2)',
],
},
],
},
};
new Chart(document.getElementById('polar-area-chart'), dataPolar);
// Chart
const dataPolar = {
type: 'polarArea',
data: {
labels: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday '],
datasets: [
{
label: 'Traffic',
data: [2112, 2343, 2545, 3423, 2365, 1985, 987],
backgroundColor: [
'rgba(63, 81, 181, 0.5)',
'rgba(77, 182, 172, 0.5)',
'rgba(66, 133, 244, 0.5)',
'rgba(156, 39, 176, 0.5)',
'rgba(233, 30, 99, 0.5)',
'rgba(66, 73, 244, 0.4)',
'rgba(66, 133, 244, 0.2)',
],
},
],
},
};
new mdb.Chart(document.getElementById('polar-area-chart'), dataPolar);
Radar chart
This type of chart will enclose the area based on a dataset's values.
Via data-mdb-attributes:
<canvas
data-mdb-chart-init
data-mdb-chart="radar"
data-mdb-dataset-label="Traffic"
data-mdb-labels="['Monday', 'Tuesday' , 'Wednesday' , 'Thursday' , 'Friday' , 'Saturday' , 'Sunday ']"
data-mdb-dataset-data="[2112, 2343, 2545, 3423, 2365, 1985, 987]"
></canvas>
// Initialization for ES Users
import { Chart, initMDB } from 'mdb-ui-kit/js/chart.es.min.js'
initMDB({ Chart });
Via JavaScript:
<canvas id="radar-chart"></canvas>
// Initialization for ES Users
import { Chart, initMDB } from 'mdb-ui-kit/js/chart.es.min.js';
initMDB({ Chart });
// Chart
const dataRadar = {
type: 'radar',
data: {
labels: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday '],
datasets: [
{
label: 'Traffic',
data: [2112, 2343, 2545, 3423, 2365, 1985, 987],
},
],
},
};
new Chart(document.getElementById('radar-chart'), dataRadar);
// Chart
const dataRadar = {
type: 'radar',
data: {
labels: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday '],
datasets: [
{
label: 'Traffic',
data: [2112, 2343, 2545, 3423, 2365, 1985, 987],
},
],
},
};
new mdb.Chart(document.getElementById('radar-chart'), dataRadar);
Bubble chart
This graph visualizes data in a series of "bubbles" with customized coordinates and radius.
Note: As mentioned before, charts with more than one dataset cannot be initialized using data attributes. For more intricate setups, you'll need to handle the initialization using JavaScript.
<canvas id="bubble-chart"></canvas>
// Initialization for ES Users
import { Chart, initMDB } from 'mdb-ui-kit/js/chart.es.min.js';
initMDB({ Chart });
// Chart
const dataBubble = {
type: 'bubble',
data: {
datasets: [
{
label: 'John',
data: [
{
x: 3,
y: 7,
r: 10,
},
],
backgroundColor: '#ff6384',
hoverBackgroundColor: '#ff6384',
},
{
label: 'Peter',
data: [
{
x: 5,
y: 7,
r: 10,
},
],
backgroundColor: '#44e4ee',
hoverBackgroundColor: '#44e4ee',
},
{
label: 'Donald',
data: [
{
x: 7,
y: 7,
r: 10,
},
],
backgroundColor: '#62088A',
hoverBackgroundColor: '#62088A',
},
],
},
};
new Chart(document.getElementById('bubble-chart'), dataBubble);
// Chart
const dataBubble = {
type: 'bubble',
data: {
datasets: [
{
label: 'John',
data: [
{
x: 3,
y: 7,
r: 10,
},
],
backgroundColor: '#ff6384',
hoverBackgroundColor: '#ff6384',
},
{
label: 'Peter',
data: [
{
x: 5,
y: 7,
r: 10,
},
],
backgroundColor: '#44e4ee',
hoverBackgroundColor: '#44e4ee',
},
{
label: 'Donald',
data: [
{
x: 7,
y: 7,
r: 10,
},
],
backgroundColor: '#62088A',
hoverBackgroundColor: '#62088A',
},
],
},
};
new mdb.Chart(document.getElementById('bubble-chart'), dataBubble);
Scatter chart
Use this chart to represent your data as a series of points with x and y coordinates.
Note: This chart also requires initialization via JavaScript. Initialization via data-mdb-attributes is not possible.
<canvas id="scatter-chart"></canvas>
// Initialization for ES Users
import { Chart, initMDB } from 'mdb-ui-kit/js/chart.es.min.js';
initMDB({ Chart });
// Chart
const dataScatter = {
type: 'scatter',
data: {
datasets: [
{
borderColor: '#4285F4',
backgroundColor: 'rgba(66, 133, 244, 0.5)',
label: 'V(node2)',
data: [
{
x: 1,
y: -1.711e-2,
},
{
x: 1.26,
y: -2.708e-2,
},
{
x: 1.58,
y: -4.285e-2,
},
{
x: 2.0,
y: -6.772e-2,
},
{
x: 2.51,
y: -1.068e-1,
},
{
x: 3.16,
y: -1.681e-1,
},
{
x: 3.98,
y: -2.635e-1,
},
{
x: 5.01,
y: -4.106e-1,
},
{
x: 6.31,
y: -6.339e-1,
},
{
x: 7.94,
y: -9.659e-1,
},
{
x: 10.0,
y: -1.445,
},
{
x: 12.6,
y: -2.11,
},
{
x: 15.8,
y: -2.992,
},
{
x: 20.0,
y: -4.102,
},
{
x: 25.1,
y: -5.429,
},
{
x: 31.6,
y: -6.944,
},
{
x: 39.8,
y: -8.607,
},
{
x: 50.1,
y: -1.038e1,
},
{
x: 63.1,
y: -1.223e1,
},
{
x: 79.4,
y: -1.413e1,
},
{
x: 100.0,
y: -1.607e1,
},
{
x: 126,
y: -1.803e1,
},
{
x: 158,
y: -2e1,
},
{
x: 200,
y: -2.199e1,
},
{
x: 251,
y: -2.398e1,
},
{
x: 316,
y: -2.597e1,
},
{
x: 398,
y: -2.797e1,
},
{
x: 501,
y: -2.996e1,
},
{
x: 631,
y: -3.196e1,
},
{
x: 794,
y: -3.396e1,
},
{
x: 1000,
y: -3.596e1,
},
],
},
],
},
};
const optionsScatter = {
options: {
title: {
display: true,
text: 'Scatter Chart - Logarithmic X-Axis',
},
scales: {
x:
{
type: 'logarithmic',
position: 'bottom',
ticks: {
userCallback: function (tick) {
var remain = tick / Math.pow(10, Math.floor(Chart.helpers.log10(tick)));
if (remain === 1 || remain === 2 || remain === 5) {
return tick.toString() + 'Hz';
}
return '';
},
},
scaleLabel: {
labelString: 'Frequency',
display: true,
},
},
y:
{
type: 'linear',
ticks: {
userCallback: function (tick) {
return tick.toString() + 'dB';
},
},
scaleLabel: {
labelString: 'Voltage',
display: true,
},
},
},
},
};
new Chart(document.getElementById('scatter-chart'), dataScatter, optionsScatter);
// Chart
const dataScatter = {
type: 'scatter',
data: {
datasets: [
{
borderColor: '#4285F4',
backgroundColor: 'rgba(66, 133, 244, 0.5)',
label: 'V(node2)',
data: [
{
x: 1,
y: -1.711e-2,
},
{
x: 1.26,
y: -2.708e-2,
},
{
x: 1.58,
y: -4.285e-2,
},
{
x: 2.0,
y: -6.772e-2,
},
{
x: 2.51,
y: -1.068e-1,
},
{
x: 3.16,
y: -1.681e-1,
},
{
x: 3.98,
y: -2.635e-1,
},
{
x: 5.01,
y: -4.106e-1,
},
{
x: 6.31,
y: -6.339e-1,
},
{
x: 7.94,
y: -9.659e-1,
},
{
x: 10.0,
y: -1.445,
},
{
x: 12.6,
y: -2.11,
},
{
x: 15.8,
y: -2.992,
},
{
x: 20.0,
y: -4.102,
},
{
x: 25.1,
y: -5.429,
},
{
x: 31.6,
y: -6.944,
},
{
x: 39.8,
y: -8.607,
},
{
x: 50.1,
y: -1.038e1,
},
{
x: 63.1,
y: -1.223e1,
},
{
x: 79.4,
y: -1.413e1,
},
{
x: 100.0,
y: -1.607e1,
},
{
x: 126,
y: -1.803e1,
},
{
x: 158,
y: -2e1,
},
{
x: 200,
y: -2.199e1,
},
{
x: 251,
y: -2.398e1,
},
{
x: 316,
y: -2.597e1,
},
{
x: 398,
y: -2.797e1,
},
{
x: 501,
y: -2.996e1,
},
{
x: 631,
y: -3.196e1,
},
{
x: 794,
y: -3.396e1,
},
{
x: 1000,
y: -3.596e1,
},
],
},
],
},
};
const optionsScatter = {
options: {
title: {
display: true,
text: 'Scatter Chart - Logarithmic X-Axis',
},
scales: {
x:
{
type: 'logarithmic',
position: 'bottom',
ticks: {
userCallback: function (tick) {
var remain = tick / Math.pow(10, Math.floor(Chart.helpers.log10(tick)));
if (remain === 1 || remain === 2 || remain === 5) {
return tick.toString() + 'Hz';
}
return '';
},
},
scaleLabel: {
labelString: 'Frequency',
display: true,
},
},
y:
{
type: 'linear',
ticks: {
userCallback: function (tick) {
return tick.toString() + 'dB';
},
},
scaleLabel: {
labelString: 'Voltage',
display: true,
},
},
},
},
};
new mdb.Chart(document.getElementById('scatter-chart'), dataScatter, optionsScatter);
Bar chart with custom options
MDB provides default options for each chart - you can easily change that by passing an object with your custom options to the Chart constructor.
Note: Read API tab to learn more about available options.
<canvas id="bar-chart-custom-options"></canvas>
// Initialization for ES Users
import { Chart, initMDB } from 'mdb-ui-kit/js/chart.es.min.js';
initMDB({ Chart });
// Bar chart with custom options
const dataBarCustomOptions = {
type: 'bar',
data: {
labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
datasets: [
{
label: 'Traffic',
data: [30, 15, 62, 65, 61, 6],
backgroundColor: [
'rgba(255, 99, 132, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(255, 206, 86, 0.2)',
'rgba(75, 192, 192, 0.2)',
'rgba(153, 102, 255, 0.2)',
'rgba(255, 159, 64, 0.2)',
],
borderColor: [
'rgba(255,99,132,1)',
'rgba(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)',
'rgba(75, 192, 192, 1)',
'rgba(153, 102, 255, 1)',
'rgba(255, 159, 64, 1)',
],
borderWidth: 1,
},
],
},
};
const optionsBarCustomOptions = {
options: {
plugins: {
legend: {
labels: {
color: 'green'
position: 'top',
}
},
scales: {
x:
{
ticks: {
color: '#4285F4',
},
},
y:
{
ticks: {
color: '#f44242',
},
},
},
},
},
};
new Chart(
document.getElementById('bar-chart-custom-options'),
dataBarCustomOptions,
optionsBarCustomOptions
);
// Bar chart with custom options
const dataBarCustomOptions = {
type: 'bar',
data: {
labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
datasets: [
{
label: 'Traffic',
data: [30, 15, 62, 65, 61, 6],
backgroundColor: [
'rgba(255, 99, 132, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(255, 206, 86, 0.2)',
'rgba(75, 192, 192, 0.2)',
'rgba(153, 102, 255, 0.2)',
'rgba(255, 159, 64, 0.2)',
],
borderColor: [
'rgba(255,99,132,1)',
'rgba(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)',
'rgba(75, 192, 192, 1)',
'rgba(153, 102, 255, 1)',
'rgba(255, 159, 64, 1)',
],
borderWidth: 1,
},
],
},
};
const optionsBarCustomOptions = {
options: {
plugins: {
legend: {
labels: {
color: 'green'
position: 'top',
}
},
scales: {
x:
{
ticks: {
color: '#4285F4',
},
},
y:
{
ticks: {
color: '#f44242',
},
},
},
},
},
};
new mdb.Chart(
document.getElementById('bar-chart-custom-options'),
dataBarCustomOptions,
optionsBarCustomOptions
);
Bar chart with custom tooltip
Set custom text format inside a tooltip by using plugins
option.
<canvas id="bar-chart-custom-tooltip"></canvas>
// Initialization for ES Users
import { Chart, initMDB } from 'mdb-ui-kit/js/chart.es.min.js';
initMDB({ Chart });
// Bar chart with custom tooltip
const dataBarCustomTooltip = {
type: 'bar',
data: {
labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
datasets: [
{
label: 'Traffic',
data: [30, 15, 62, 65, 61, 65, 40],
},
],
},
};
const optionsBarCustomTooltip = {
options: {
plugins: {
tooltip: {
callbacks: {
label: function (context) {
let label = context.dataset.label || '';
label = `${label}: ${context.formattedValue} users`;
return label;
},
},
},
},
},
};
new Chart(
document.getElementById('bar-chart-custom-tooltip'),
dataBarCustomTooltip,
optionsBarCustomTooltip);
// Bar chart with custom tooltip
const dataBarCustomTooltip = {
type: 'bar',
data: {
labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
datasets: [
{
label: 'Traffic',
data: [30, 15, 62, 65, 61, 65, 40],
},
],
},
};
const optionsBarCustomTooltip = {
options: {
plugins: {
tooltip: {
callbacks: {
label: function (context) {
let label = context.dataset.label || '';
label = `${label}: ${context.formattedValue} users`;
return label;
},
},
},
},
},
};
new mdb.Chart(
document.getElementById('bar-chart-custom-tooltip'),
dataBarCustomTooltip,
optionsBarCustomTooltip);
Charts - API
Import
Importing components depends on how your application works. If you intend to use the MDBootstrap ES
format, you must
first import the component and then initialize it with the initMDB
method. If you are going to use the UMD
format,
just import the mdb-ui-kit
package.
import { Chart, initMDB } from 'mdb-ui-kit/js/chart.es.min.js'
initMDB({ Chart });
import 'mdb-ui-kit';
Usage
Via data attributes
Using the Chart component doesn't require any additional JavaScript code - simply add
data-mdb-chart-init
attribute to
canvas
tag
and use other data attributes to set all options.
For ES
format, you must first import and call the initMDB
method.
<canvas
data-mdb-chart-init
class="col-sm-12 col-md-10 col-xl-8 mb-4"
data-mdb-chart="bar"
data-mdb-dataset-label="Traffic"
data-mdb-labels="['Monday', 'Tuesday' , 'Wednesday' , 'Thursday' , 'Friday' , 'Saturday' , 'Sunday ']"
data-mdb-dataset-data="[2112, 2343, 2545, 3423, 2365, 1985, 987]"
></canvas>
Via JavaScript
When using the Chart constructor to initialize an instance, you can specify three parameters.
The first argument is a wrapper element for a chart, second is a data
object with
necessary information about displayed datasets. The last are options
- each Chart
has its default settings provided by the component, so this parameter is optional.
<canvas id="bar-chart"></canvas>
// Bar chart
const dataBar = {
type: 'bar',
data: {
labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
datasets: [
{
label: 'Traffic',
data: [30, 15, 62, 65, 61, 65, 40],
},
],
},
};
new Chart(document.getElementById('bar-chart'), dataBar);
// Bar chart
const dataBar = {
type: 'bar',
data: {
labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
datasets: [
{
label: 'Traffic',
data: [30, 15, 62, 65, 61, 65, 40],
},
],
},
};
new mdb.Chart(document.getElementById('bar-chart'), dataBar);
Via jQuery
Note: By default, MDB does not include jQuery and you have to add it to the project on your own.
<canvas id="bar-chart"></canvas>
// Bar chart
const dataBar = {
type: 'bar',
data: {
labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
datasets: [
{
label: 'Traffic',
data: [30, 15, 62, 65, 61, 65, 40],
},
],
},
};
$(document).ready(() => {
$('#bar-chart').chart(dataBar);
});
Options
Options can be passed via data attributes or JavaScript. For data attributes, append the option name to
data-mdb-
, as in data-mdb-background-color=""
.
Note: Scatter
and bubble
charts has to be initialized with
JavaScript.
Name | Type | Description |
---|---|---|
data-mdb-chart
|
String | Attribute responsible for defining a type. |
data-mdb-labels
|
String | Labels for x-axis |
data-mdb-dataset-label
|
String | Label values for datasets |
data-mdb-dataset-background-color
|
Color[ ] | A single color or an array of colors for datasets |
data-mdb-dataset-border-color
|
Color[ ] | A single border or line color or an array of border colors for datasets |
data-mdb-dataset-border-width
|
Number[ ] | Single border thickness or a border thickness table for datasets |
data-mdb-dataset-data
|
Number[ ] | Value sets for charts |
Line chart options
The line chart allows specifying several properties for each dataset. Besides, some of them (f.e. all point* properties) can be defined as an array - this way the first value applies to the first point, the second to the second point, etc.
Name | Type | Description |
---|---|---|
label
|
String | The label for the dataset that appears in the legend and tooltips. |
xAxisID
|
String | The ID of the x-axis to plot this dataset on. If not specified, this defaults to the ID of the first found x-axis |
yAxisID
|
String | The ID of the y-axis to plot this dataset on. If not specified, this defaults to the ID of the first found y-axis. |
backgroundColor
|
Color | The fill color under the line. |
borderColor
|
Color | The color of the line. |
borderWidth
|
Number | The width of the line in pixels. |
borderDash
|
Number | The length and spacing of dashes. |
borderDashOffset
|
Number | Offset for line dashes. |
borderCapStyle
|
String | Cap style of the line. |
borderJoinStyle
|
String | Line joint style. |
cubicInterpolationMode
|
String | The algorithm used to interpolate a smooth curve from the discrete data points. |
fill
|
Boolean/String | How to fill the area under the line. |
lineTension
|
Number | Bezier curve tension of the line. Set to 0 to draw straight lines. This option is ignored if monotone cubic interpolation is used. |
pointBackgroundColor
|
Color/Color[ ] | The fill color for points. |
pointBorderColor
|
Color/Color[ ] | The border color for points. |
pointBorderWidth
|
Number/Number[ ] | The width of the point border in pixels. |
pointRadius
|
Number/Number[ ] | The radius of the point shape. If set to 0, the point is not rendered. |
pointStyle
|
String/String[ ]/Image/Image[ ] | Style of the point. |
pointRotation
|
Number/Number[ ] | The rotation of the point in degrees. |
pointHitRadius
|
Number/Number[ ] | The pixel size of the non-displayed point that reacts to mouse events. |
pointHoverBackgroundColor
|
Color/Color[ ] | Point background color when hovered. |
pointHoverBorderColor
|
Color/Color[ ] | Point border color when hovered. |
pointHoverBorderWidth
|
Number/Number[ ] | The border width of a point when hovered over. |
pointHoverRadius
|
Number/Number[ ] | The radius of the point when hovered over. |
showLine
|
Boolean | If false, the line is not drawn for this dataset. |
spanGaps
|
Boolean | If true, lines will be drawn between points with no or null data. If false, points with NaN data will create a break in the line |
steppedLine
|
Boolean/String | If the line is shown as a stepped line. |
Bar chart options
The bar chart allows specifying several properties for each dataset. Besides, some of them can be defined as an array - this way the first value applies to the first bar, the second to the second bar, etc.
Name | Type | Description |
---|---|---|
label
|
String | The label for the dataset which appears in the legend and tooltips. |
xAxisID
|
String | The ID of the x axis to plot this dataset on. If not specified, this defaults to the ID of the first found x axis |
yAxisID
|
String | The ID of the y axis to plot this dataset on. If not specified, this defaults to the ID of the first found y axis. |
backgroundColor
|
Color/Color[ ] | The fill color of the bar. |
borderColor
|
Color/Color[ ] | The color of the bar border. |
borderWidth
|
Number/Number[ ] | The stroke width of the bar in pixels. |
borderSkipped
|
String | Which edge to skip drawing the border for. |
hoverBackgroundColor
|
Color/Color[ ] | The fill colour of the bars when hovered. |
hoverBorderColor
|
Color/Color[ ] | The stroke colour of the bars when hovered. |
hoverBorderWidth
|
Number/Number[ ] | The stroke width of the bars when hovered. |
Radar chart options
The radar chart allows specifying several properties for each dataset. Besides, some of them (f.e. all point* properties) can be defined as an array - this way the first value applies to the first point, the second to the second point, etc.
Name | Type | Description |
---|---|---|
label
|
String | The label for the dataset which appears in the legend and tooltips. |
backgroundColor
|
Color | The fill color under the line. |
borderColor
|
Color | The color of the line. |
borderWidth
|
Number | The width of the line in pixels. |
borderDash
|
Number[ ] | Length and spacing of dashes. S |
borderDashOffset
|
Number | Offset for line dashes. |
borderCapStyle
|
String | Cap style of the line |
borderJoinStyle
|
String | Line joint style |
fill
|
Boolean/String | How to fill the area under the line. |
lineTension
|
Number | Bezier curve tension of the line. Set to 0 to draw straightlines. |
pointBackgroundColor
|
Color/Color[ ] | The fill color for points. |
pointBorderColor
|
Color/Color[ ] | The border color for points. |
pointBorderWidth
|
Number/Number[ ] | The width of the point border in pixels. |
pointRadius
|
Number/Number[ ] | TThe radius of the point shape. If set to 0, the point is not rendered. |
pointRotation
|
Number/Number[ ] | The rotation of the point in degrees. |
pointStyle
|
String/String[ ]/Image/Image[ ] | Style of the point. |
pointHitRadius
|
Number/Number[ ] | The pixel size of the non-displayed point that reacts to mouse events. |
pointHoverBackgroundColor
|
Color/Color[ ] | Point background color when hovered. |
pointHoverBorderColor
|
Color/Color[ ] | Point border color when hovered. |
pointHoverBorderWidth
|
Number/Number[ ] | Border width of point when hovered. |
pointHoverRadius
|
Number/Number[ ] | The radius of the point when hovered. |
Doughnut and Pie chart options
In Doughnut and Pie charts passing an array of values to an option will apply each of them to a corresponding entry in a dataset.
Name | Type | Description |
---|---|---|
backgroundColor
|
Color[ ] | The fill color of the arcs in the dataset. |
borderColor
|
Color[ ] | The border color of the arcs in the dataset. |
borderWidth
|
Number[ ] | The border width of the arcs in the dataset. |
hoverBackgroundColor
|
Color[ ] | The fill colour of the arcs when hovered. |
hoverBorderColor
|
Color[ ] | The stroke colour of the arcs when hovered. |
hoverBorderWidth
|
Number[ ] | The stroke width of the arcs when hovered. |
Polar Area chart options
Polar area charts are similar to pie charts, but each segment has the same angle and differs in the radius (depending on the value).
Name | Type | Description |
---|---|---|
backgroundColor
|
Color | The fill color of the arcs in the dataset. |
borderColor
|
Color | The border color of the arcs in the dataset. |
borderWidth
|
number | The border width of the arcs in the dataset. |
hoverBackgroundColor
|
Color | The fill colour of the arcs when hovered. |
hoverBorderColor
|
Color | The stroke colour of the arcs when hovered. |
hoverBorderWidth
|
number | The stroke width of the arcs when hovered. |
Bubble chart options
A bubble chart displays a series of points with x and y coordinates. The z coordinate determines the size of each bubble.
Name | Type | Description |
---|---|---|
backgroundColor
|
Color | bubble background color |
borderColor
|
Color | bubble border color |
borderWidth
|
Number | bubble border width (in pixels) |
hoverBackgroundColor
|
Color | bubble background color when hovered |
hoverBorderColor
|
Color | bubble border color when hovered |
hoverBorderWidth
|
Number | bubble border width when hovered (in pixels) |
hoverRadius
|
Number | bubble additional radius when hovered (in pixels) |
hitRadius
|
Number | bubble additional radius for hit detection (in pixels). |
label
|
String | The label for the dataset which appears in the legend and tooltips. |
order
|
Number | The drawing order of dataset. |
pointStyle
|
String | bubble shape style. |
rotation
|
Number | bubble rotation (in degrees). |
radius
|
Number | bubble radius (in pixels). |
Scatter chart options
Scatter chart displays the dataset as a series of points with z and y coordinates.
The scatter chart supports the same properties as the line chart.
Chart Legend options
Chart legend options allow changing the graphic part of the legend.
Name | Type | Default | Description |
---|---|---|---|
display
|
Boolean | true | showing legend |
position
|
String | 'top' | Position of the legend. |
fullWidth
|
Boolean | true | Marks that this box should take the full width of the canvas (pushing down other boxes). This is unlikely to need to be changed in day-to-day use. |
onClick
|
Function |
A callback that is called when a click event is registered on a label item |
|
onHover
|
Function |
A callback that is called when a 'mousemove' event is registered on top of a label item |
|
reverse
|
Boolean | false |
Legend will show datasets in reverse order. |
labels
|
Object |
See documentation about labels in table below. |
Chart Legend options - label configuration
Chart legend options - label configuration allow changing the text part of the legend.
Name | Type | Default | Description |
---|---|---|---|
boxWidth
|
Number | 40 | width of coloured box |
font.size
|
Number | 12 | font size of text |
font.style
|
String | 'normal' | font style of text |
color
|
Color | '#666' |
Color of text |
font.family
|
String | "Roboto" |
Font family of legend text. |
padding
|
Number | 10 |
Padding between rows of colored boxes. . |
generateLabels
|
Function |
Generates legend items for each thing in the legend. Default implementation returns the text + styling for the color box. |
|
filter
|
Function | null |
Filters legend items out of the legend. Receives 2 parameters, a Legend Item and the chart data. |
usePointStyle
|
Boolean | false |
Label style will match corresponding point style (size is based on fontSize, boxWidth is not used in this case). |
backgroundColor
|
Style/Null | Null |
Background color of datalabels. . |
Methods
Name | Description | Example |
---|---|---|
update(data, config)
|
Updates the chart's data and calls .update(mode?) method. In this method, passing both arguments is required. However, when only the data is changed, the second argument can be an empty object. |
myChart.update(data, config)
|
dispose
|
Removes a mdb.Chart instance |
myChart.dispose()
|
getInstance
|
Static method which allows you to get the chart instance associated to a DOM element. |
Chart.getInstance(chartEl)
|
getOrCreateInstance
|
Static method which returns the chart instance associated to a DOM element or create a new one in case it wasn't initialized. |
Chart.getOrCreateInstance(chartEl)
|
const myChart = document.getElementById('myChart');
const instance = new Chart(myChart, data, options);
instance.dispose();
const myChart = document.getElementById('myChart');
const instance = new mdb.Chart(myChart, data, options);
instance.dispose();
Events
Event handling in Charts differs from other MDB components - in the
options
parameter you can define which events should be triggered and handlers
for some of them (click, hover).
Name | Type | Default | Description |
---|---|---|---|
events
|
string[ ] |
['mousemove', 'mouseout', 'click', 'touchstart', 'touchmove']
|
The events option defines the browser events
that the chart should listen to for tooltips and hovering.
|
onHover |
function | null |
Called when any of the events fire. Called in the context of the chart and passed the event and an array of active elements (bars, points, etc). |
onClick
|
function | null |
Called if the event is of type
'mouseup' or
'click' . Called in the context of the chart and
passed the event and an array of active elements.
|
const eventOption = {
options: {
// This chart will not respond to mousemove, etc
events: ['click']
}
};