javascript - 想要在值为零时显示js条形图的一小部分

标签 javascript charts chart.js

我有这些条形图,有时会向用户显示零值。我想显示一些条形图,这样它看起来就不完全是空的,但数据连接到条形图的视觉表示。有什么方法可以让顶部数字为零,但每列中的值为 3(或较小的值)?这是代码和屏幕截图。一张截图有数据,另一张截图为零。我希望零图在零时仅显示一点橙色和绿色。谢谢 enter image description here enter image description here

<canvas id="bar-chart" width="900" height="350"></canvas>

<script type="text/javascript">
    var ctx = document.getElementById("bar-chart");
debugger;
var data = {
  labels: ["Page Views", "Data Requests"],
  datasets: [{
    data: [<?php echo $databaseClass->totalViewsSelectedMonth($user_id, $year, 1);

      ?>, <?php 
      echo $databaseClass->isRfYearMonth($user_id, $year, 1);
      ?>],
    backgroundColor: ["orange", "green"]
  }]
}
var myChart = new Chart(ctx, {
  type: 'bar',
  data: data,
  options: {
    "hover": {
      "animationDuration": 0
    },
    "animation": {
      "duration": 1,
      "onComplete": function() {
        var chartInstance = this.chart,
          ctx = chartInstance.ctx;

        ctx.font = Chart.helpers.fontString(Chart.defaults.global.defaultFontSize, Chart.defaults.global.defaultFontStyle, Chart.defaults.global.defaultFontFamily);
        ctx.textAlign = 'center';
        ctx.textBaseline = 'bottom';

        this.data.datasets.forEach(function(dataset, i) {
          var meta = chartInstance.controller.getDatasetMeta(i);
          meta.data.forEach(function(bar, index) {
            var data = dataset.data[index];
            ctx.fillText(data, bar._model.x, bar._model.y - 5);
          });
        });
      }
    },
    legend: {
      "display": false
    },
    tooltips: {
      "enabled": false
    },
    scales: {
      yAxes: [{
        display: false,
        gridLines: {
          display: false
        },
        ticks: {
          max: Math.max(...data.datasets[0].data) + 20,
          display: false,
          beginAtZero: true
        }
      }],
      xAxes: [{
        gridLines: {
          display: false
        },
        ticks: {
          beginAtZero: true
        }
      }]
    }
  }
});
</script>

最佳答案

看起来像you can update the axes将您的图表设置为新的默认值。因此,使用其示例的修改形式,如下所示(修改以适合您的代码):

// ...
scales: {
    yAxes: [{
        display: false,
        gridLines: {
            display: false
        },
        ticks: {
            max: Math.max(...data.datasets[0].data) + 20,
            min: -3, // ADDED
            display: false,
            beginAtZero: true
        }
    }],
// ...

...会做你正在寻找的事情 - 附带的好处是 0 和 3 看起来不像相同的值,相对条形大小应该保持准确。

关于javascript - 想要在值为零时显示js条形图的一小部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53547198/

相关文章:

chart.js - 通过PHP、MySQL通过ajax调用更新图表数据

jquery - Chart.js 圆环图工具提示大小?

javascript - 将二维数组设置为输入隐藏字段

javascript - 将 JSON 对象加载到 D3 力定向图中

c# - 如何从 Excel 工作表生成图表?

java - 无法删除 ObservableList 中的最后一个元素

javascript - 使用 jquery 无法获取正确的表单值

javascript - 从 vue.js 中的子发射传递时值未定义

javascript - 自定义 google-chart hAxis 标签

asp.net-core - 无法在chartJS中显示数据标签