javascript - 在 Chart.js 中制作直方图

标签 javascript chart.js

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

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

有什么方法可以指定忽略丢失的数据点吗?还是抵消酒吧?还是我找错了树?

documentation有点难以解析,所以我不确定是否遗漏了一些简单的东西。

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
        }
      }]
    }
  }
});
canvas { max-width: 200px; }
<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>

编辑:我意识到还有其他库可以实现类似的功能,我正在研究其他选项。但是,我已经发布了这个以防万一有人知道通过 Chart.js 的解决方案,这将是理想的。

这是我想要的最终结果的示例:

enter image description here

最佳答案

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

通过使用具有不同最大值的 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
        }
      }]
    }
  }
});
canvas { max-width: 200px; }
<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>

关于javascript - 在 Chart.js 中制作直方图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51880101/

相关文章:

chart.js - 有没有办法在 Chart.js 中过滤数据?

javascript - 将 SVG 和 .JPG 合并为一张图像?

JavaScript 不适用于 SVG

chart.js - 如何在 Chart.js 中创建自定义对数轴

javascript - 在 Chart.js v 2.7.1 中的条形图顶部显示数据

javascript - 如何将此 Object.values 除以总数?

angular - 如何在 Jasmine 中对语句 'chart.chart.update()' 进行单元测试?

javascript - chrome 扩展 - sendResponse 不等待异步功能

javascript - "require is not defined"使用 webpack 2

javascript - 拖放图片上传并删除 URL(不是文件)