ChartJS xAxis标签位置

时间:2019-10-02 20:42:46

标签: javascript chart.js vue-chartjs

我有一个ChartJS,当您将窗口调整为较小尺寸时,该标签显示为倾斜标签。

enter image description here

我想做的是将X标签垂直向下放一点,以使它们尽可能不靠近图形的底部。

在四处搜寻之后,我似乎可以禁用x轴的刻度显示,并使用该选项的动画手动进行此操作。我试图在下面的fiddle中实现这一点。

    animation: {
      duration: 1,
      onComplete: function() {
        var chartInstance = this.chart;
        this.data.datasets.forEach(function(dataset, i) {
          var meta = chartInstance.controller.getDatasetMeta(i);
          meta.data.forEach(function(bar, index) {

            var label = bar._model.label;
            var xOffset = bar._model.x;
            var yOffset = bar._model.y;
            ctx.fillText(label, xOffset, 420);
          });
        });
      }
    },

但是,当我调整窗口大小时,我无法正确缩放标签。你能帮忙吗?

1 个答案:

答案 0 :(得分:1)

Chart.js为此在ticks对象中实现了padding属性:

  

在刻度标签和轴之间填充。当设置在垂直轴上时,此方向适用于水平(X)方向。在水平轴上设置时,这适用于垂直(Y)方向。

这是一个工作示例,x轴标签从行向下偏移20px:

new Chart(document.getElementById("chart"), {
  type: "bar",
  data: {
    labels: ["Blue", "Red", "Green", "Orange", "Purple"],
    datasets: [{
      data: [0, 1, 2, 3, 4]
    }]
  },
  options: {
    maintainAspectRatio: false,
    scales: {
      xAxes: [{
        ticks: {
          padding: 20
        }
      }]
    }
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.8.0/Chart.min.js"></script>
<div style="height:200px;width:200px">
  <canvas id="chart"></canvas>
</div>

相关问题