Chart.js with invalid double axis start points (if negative values)

My application has a chart.js chart. This is what it looks like without negative values:

enter image description here

With negative values:

enter image description here

As you can see I have a double Y-axis. They work as needed as long as there are no negative values. But if there are any, then the correct AxisY starts in the wrong position. How do I run it in the same location as the left axis?

Here is my code:

private  buildOptions(): any {
    return {
        responsive: true,
        title: {
            display: false,
            text: ''
        },
        tooltips: {
            mode: 'index',
            intersect: true
        },
        scales: {
            yAxes: [{
                position: "left",
                id: "y-axis-0",
                fontColor: '#fff'
            }, {
                position: "right",
                id: "y-axis-1",
                fontColor: '#fff'
            }]
        },
        legend: {
            display: true,
            labels: {
                fontColor: '#fff'
            }
        }
    };
}

      

Thank.

0


source to share


1 answer


Have you tried setting the same minimum value for both axes?

You can use ticks to indicate:

ticks: {
          min: -5
        }

      



Here's an example snippet I made for you:

var ctx = document.getElementById("myChart").getContext('2d');
var myChart = new Chart(ctx, {
  type: 'bar',
  data: {
    labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"],
    datasets: [{
      label: '# of Votes',
      data: [12, -5, 3, 5, 2, -3],
      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
    }]
  },
  options: {
    scales: {
      yAxes: [{
        position: "left",
        id: "y-axis-0",
        fontColor: '#fff',
        ticks: {
          min: -5
        }
      }, {
        position: "right",
        id: "y-axis-1",
        fontColor: '#fff',
        ticks: {
          min: -5
        }
      }]
    }
  }
});
      

<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.4.0/Chart.bundle.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div style="width:50%;">
  <canvas id="myChart" width="400" height="400"></canvas>
</div>
      

Run codeHide result


0


source







All Articles