javascript - 如何更改 Chart.js 中的 x 轴标签位置

标签 javascript chart.js

是否可以更改标签位置,例如 CSS 中的内边距或边距? current chart

我希望将标签放在 x 轴上方。

最佳答案

您可以通过以下步骤更改xAxes标签位置:

  1. .getContext("2d") 添加到获取 ctx Canvas 对象的调用中:

    var ctx = document.getElementById("gescanntePackzettelChart").getContext("2d");
    
  2. 隐藏当前 xAxes 刻度:

    xAxes: [{
        ticks: {
            display: false
        }
    }
    
  3. 动画添加到选项配置中,并使用 Canvas fillText()创建新标签的方法:

    animation: {
        duration: 1,
        onComplete: function() {
            var controller = this.chart.controller;
            var chart = controller.chart;
            var xAxis = controller.scales['x-axis-0'];
    
            var numTicks = xAxis.ticks.length;        
            var xOffsetStart = xAxis.width / numTicks;
            var halfBarWidth = (xAxis.width / (numTicks * 2));
    
            xAxis.ticks.forEach(function(value, index) {
                var xOffset = (xOffsetStart * index) + halfBarWidth;
                var yOffset = chart.height - 20;
                ctx.fillText(value, xOffset, yOffset);
            });
    
        }
    }
    

    对于xOffset,要找出正确的位置,请获取xAxis宽度并将其除以刻度标签的数量。这将告诉您每个条的宽度。然后,将该数字乘以当前的索引,将标签定位在正确的栏前面。最后,添加半条的宽度以使标签在条中居中。

    对于yOffset,从图表的高度开始,然后减去您想要将标签向上移动的距离。

工作中的 JSFiddle: https://jsfiddle.net/m5tnkr4n/124

关于javascript - 如何更改 Chart.js 中的 x 轴标签位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44437682/

相关文章:

javascript - 如何通过 svelte 访问本地 json 文件?

javascript - 遍历 Javascript 对象以构建嵌套列表

javascript - 如何将 eslint airbnb 样式指南连接到一个文件中以复制到 package.json 中?

chart.js - 如何在 chart.js 中获取实际的图表宽度和高度

javascript - 如何在 Chart.js 中旋转自定义标记?

javascript - 在 Chart.js 2 中修改散点图的 X 轴标签

javascript - 如何在 Google Apps 脚本中添加工作表函数?

Javascript - 多个 setInterval 的好方法吗?

javascript - chart.js 中折线图上的相对条形图叠加

chart.js - ChartJs 2.0 如何获取被点击的点信息?