具有两个yaxes图表js的单杠

时间:2018-10-10 22:09:29

标签: javascript charts chart.js

我想制作一个带有2个轴的水平条,其中一个条可以具有正值或负值,并且正侧具有y轴,负侧具有其他y轴,如图像

chart

这是我的代码JSFiddle

我无法更改第二个Yaxes的名称

我添加具有相同值的数组,因为我想要两个yaxes,如果您知道我可以使用的其他库,则不必使用“ chart.js”,请告诉我

    var canvas = document.getElementById('myChart');
    var extremo1=[-5, 3, 9, -11];
    var extremo2=[-5, 3, 9, -11];
    var data = {
    labels: ["Visua_Verbal", "Secuencial_Global", "Sensitivo_Intuitivo", "Reflexivo_Activo"],

    datasets: [
        {
         backgroundColor: 'rgba(63, 191, 191, 0.75)',
         borderColor: 'rgba(63, 191, 191, 0.75)',
         hoverBackgroundColor: 'rgba(191, 63, 63, 1)',
         hoverBorderColor: 'rgba(191, 63, 63, 1)',
                 data: extremo1
        },
        {   
         backgroundColor: 'rgba(63, 191, 191, 0.75)',
         borderColor: 'rgba(63, 191, 191, 0.75)',
         hoverBackgroundColor: 'rgba(191, 63, 63, 1)',
         hoverBorderColor: 'rgba(191, 63, 63, 1)',
                 data: extremo1
        }
    ]
};

var option = {
      maintainAspectRatio: false,
      responsive: true,
        scales: {
               xAxes: [{
                 display: true,
                 ticks: {
                 maxTicksLimit: 12
                 }
               }],
               yAxes: [{
                  position: "left",
                  display: true,
                  ticks: { 
                  callback:(label,index,labels)=>{
                  label = label.match(/_(\w*)/)[1];
                  return label;
                  }}
                  },
                  {
                   position: "right",
                   display: true,
                   ticks: {

                   callback:(label,index,labels)=>{
                   return label ;
                   }
                  }
                 }]
                 },
                 legend: {
                         display: false
                }

};
var myLineChart = new Chart(canvas,{
    type: 'horizontalBar',
    data:data,
  options:option
});

1 个答案:

答案 0 :(得分:0)

在下面的代码段中,我在y轴上设置了labelstypeoffset选项,以实现所需的结果。我还删除了不必要的属性。

var canvas = document.getElementById('myChart');
var extremo = [-5, 3, 9, -11];
var data = {
  datasets: [{
    backgroundColor: 'rgba(63, 191, 191, 0.75)',
    borderColor: 'rgba(63, 191, 191, 0.75)',
    hoverBackgroundColor: 'rgba(191, 63, 63, 1)',
    hoverBorderColor: 'rgba(191, 63, 63, 1)',
    data: extremo
  }]
};

var option = {
  maintainAspectRatio: false,
  responsive: true,
  scales: {
    xAxes: [{
      ticks: {
        maxTicksLimit: 12
      }
    }],
    yAxes: [{
        labels: ['Verbal', 'Global', 'Reflexivo', 'Sensitivo']
      },
      {
        position: 'right',
        labels: ['Visual', 'Secuencial', 'Activo', 'Intuitivo'],
        gridLines: {
          display: false
        },
        type: 'category',
        offset: true
      }
    ]
  },
  legend: {
    display: false
  }
};

var myLineChart = new Chart(canvas, {
  type: 'horizontalBar',
  data: data,
  options: option
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.min.js"></script>
<canvas id="myChart">