Mixed Chart Types

With Chart.js, it is possible to create mixed charts that are a combination of two or more different chart types. A common example is a bar chart that also includes a line dataset.

Creating a mixed chart starts with the initialization of a basic chart.

  1. var myChart = new Chart(ctx, {
  2. type: 'bar',
  3. data: data,
  4. options: options
  5. });

At this point we have a standard bar chart. Now we need to convert one of the datasets to a line dataset.

  1. var mixedChart = new Chart(ctx, {
  2. type: 'bar',
  3. data: {
  4. datasets: [{
  5. label: 'Bar Dataset',
  6. data: [10, 20, 30, 40]
  7. }, {
  8. label: 'Line Dataset',
  9. data: [50, 50, 50, 50],
  10. // Changes this dataset to become a line
  11. type: 'line'
  12. }],
  13. labels: ['January', 'February', 'March', 'April']
  14. },
  15. options: options
  16. });

At this point we have a chart rendering how we’d like. It’s important to note that the default options for a line chart are not merged in this case. Only the options for the default type are merged in. In this case, that means that the default options for a bar chart are merged because that is the type specified by the type field.

Drawing order

By default, datasets are drawn so that first one is top-most. This can be altered by specifying order option to datasets. order defaults to 0.

  1. var mixedChart = new Chart(ctx, {
  2. type: 'bar',
  3. data: {
  4. datasets: [{
  5. label: 'Bar Dataset',
  6. data: [10, 20, 30, 40],
  7. // this dataset is drawn below
  8. order: 1
  9. }, {
  10. label: 'Line Dataset',
  11. data: [10, 10, 10, 10],
  12. type: 'line',
  13. // this dataset is drawn on top
  14. order: 2
  15. }],
  16. labels: ['January', 'February', 'March', 'April']
  17. },
  18. options: options
  19. });