在Chart.js中制作直方图

tha*_*ksd 8 javascript chart.js

我们在代码库中使用Chart.js库,我需要创建一个直方图,这不是它们的默认图表类型之一。因此,我尝试覆盖条形图上的x轴刻度线,以使其出现在每个条形的左,右角,而不是直接在其下方。

在下面的示例中,通过在labels数组中添加一个额外的项并在中显示第二个x轴,我获得了所需的x轴options。但是,因为现在有了一个额外的标签,所以条形图占据了宽度的4/5处,为不存在的数据点留出了空间。

我可以指定某种方式来忽略丢失的数据点吗?或抵消酒吧?还是我吠错了树?

文档很难解析,因此我不确定是否缺少一些简单的东西。

var ctx = document.getElementById("myChart").getContext('2d');
var myChart = new Chart(ctx, {
  type: 'bar',
  data: {
    labels: [0, 1, 2, 3, 4],
    datasets: [{
      label: 'Group A',
      data: [12, 19, 3, 5],
      backgroundColor: 'rgba(255, 99, 132, 1)',
    }]
  },
  options: {
    scales: {
      xAxes: [{
        display: false,
        barPercentage: 1.30,
      }, {
        display: true,
      }],
      yAxes: [{
        ticks: {
          beginAtZero:true
        }
      }]
    }
  }
});
Run Code Online (Sandbox Code Playgroud)
canvas { max-width: 200px; }
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.min.js"></script>
<canvas id="myChart" width="20" height="20"></canvas>
Run Code Online (Sandbox Code Playgroud)

编辑:我意识到还有其他库可以达到类似的目的,我正在寻找其他选择。但是,我已发布了此信息,以防万一有人通过Chart.js知道解决方案,这是理想的选择。

这是我要达到的最终结果的一个示例:

在此处输入图片说明

Don*_*Don 8

我相信您可以通过使用x轴配置上的max参数来获得所需的结果ticks

通过使用具有不同最大值的2个不同x轴,可以将条形标签的标记方式与绘制方式不同。导致在条之间标记标记,而没有绘制额外的“空”条。

var ctx = document.getElementById("myChart").getContext('2d');
var dataValues = [12, 19, 3, 5];
var dataLabels = [0, 1, 2, 3, 4];
var myChart = new Chart(ctx, {
  type: 'bar',
  data: {
    labels: dataLabels,
    datasets: [{
      label: 'Group A',
      data: dataValues,
      backgroundColor: 'rgba(255, 99, 132, 1)',
    }]
  },
  options: {
    scales: {
      xAxes: [{
        display: false,
        barPercentage: 1.3,
        ticks: {
            max: 3,
        }
     }, {
        display: true,
        ticks: {
            autoSkip: false,
            max: 4,
        }
      }],
      yAxes: [{
        ticks: {
          beginAtZero:true
        }
      }]
    }
  }
});
Run Code Online (Sandbox Code Playgroud)
canvas { max-width: 200px; }
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.min.js"></script>
<canvas id="myChart" width="20" height="20"></canvas>
Run Code Online (Sandbox Code Playgroud)

  • 请务必注意,“ max:3”和“ max:4”是标签数据中的ACTUAL值。我很努力地找出这一点,以防万一有人处于同一位置。 (2认同)