水平条形图js中的多个y轴

时间:2017-05-09 13:39:17

标签: javascript graph charts chart.js

我正在尝试使用horizontalBar图表在chartjs中绘制多个y轴。

以下是最终图表的样子:

enter image description here

这是我的图表配置:

{
  type: 'horizontalBar',
  data: {
    labels: ['a', 'b', 'c', 'd', 'e'],
    datasets: [{
      label: 'A',
      yAxisID: 'A',
      data: [10, 20, 30, 40, 50],
      backgroundColor: 'blue'
    }, {
      label: 'B',
      yAxisID: 'B',
      data: [10, 20, 30, 40, 50],
      backgroundColor: 'red'
    }]
  },
  options: {
    scales: {
      xAxes: [{
        ticks: {
          beginAtZero: true
        }
      }],
      yAxes: [{
        id: 'A',
        position: 'left'
      }, {
        id: 'B',
        position: 'right'
      }]
    }
  }

第一个数据集(蓝色数据集)正确显示,其中包含正确的y轴值(即abc,等)

但第二个数据集根本没有出现。此外,第二个数据集(右侧)的y轴显示504030等,而不是abc ...

PS:必须同时显示y轴。这是因为我必须绘制右侧y轴的正值(蓝色值)和左侧y轴的负值(红色值)。

这是jsFiddle

1 个答案:

答案 0 :(得分:2)

更改您的第二个数据'对象'标签'和' yAxisID'来自' B'的值到了'。此外,您可以删除第二个' yAxes'底部的物体。

所以它看起来像这样:

var canvas = document.getElementById('chart');
new Chart(canvas, {
  type: 'horizontalBar',
  data: {
    labels: ['a', 'b', 'c', 'd', 'e'],
    datasets: [{
      label: 'A',
      yAxisID: 'A',
      data: [100, 90, 80, 70, 60],
      backgroundColor: 'blue'
    }, {
      label: 'A',
      yAxisID: 'A',
      data: [-100, -90, -80, -70, -60],
      backgroundColor: 'red'
    }]
  },
  options: {
    scales: {
      yAxes: [{
        id: 'A',
        position: 'left'
      }]
    }
  }
});

jsfiddle:https://jsfiddle.net/vjt2r1mL/362/