将非零值作为水平条形图的中点?

时间:2018-03-09 01:44:04

标签: chart.js

在Chart.js 2.x中,有没有办法做一个水平条形图,以使条左或右的中点不为零?

我的数据都是1-10个值,但是我希望左边的数据值为< 5,右边的值> 5

我已经通过将值更改为-5到5来完成了一种解决方法,但是x轴显示为-5到5,工具提示显示“已转换”值...这两者都不是我想要的。

我想做的是什么?

谢谢,

斯科特

1 个答案:

答案 0 :(得分:2)

如上面的评论中所示,采用您的解决方法并使用tick format,您可以将刻度值转换为原始值:



var origData = [1, 3, 7, 8, 10];
var origin = 5;
var chartData = {
  labels: ['A', 'B', 'C', 'D', 'E'],
  datasets: [{
    label: 'value',
    backgroundColor: 'rgba(0, 20, 250, 0.6)',
    borderColor: 'rgba(0, 20, 250, 0.9)',
    data: origData.map(function(value) { return value-origin; }),
  }]
};

var ctx = document.getElementById("myChart").getContext("2d");
var myBar = new Chart(ctx, {
  type: 'horizontalBar',
  data: chartData,
  options: {
    legend: {
      display: false
    },
    scales: {
      yAxes: [{
      	color: 'red',
        type: 'category',
      }],
      xAxes: [{
        gridLines:{
          color: "black",
          borderDash: [5, 10],
          zeroLineColor:"red"
        },
        ticks: {
        	min: -5,
          max: 5,
          callback: function(value, index, values) {
            return value+origin;
          }
        }
      }],
    }
  }
});

<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.min.js"></script>
<canvas id="myChart" height="300" width="500"></canvas>
&#13;
&#13;
&#13;