javascript - Chart.js自动缩放

标签 javascript charts chart.js

我一直在测试 Chart.js 是否可以将其包含在项目中。我只是有一个小问题。它无法正确缩放某些数据集。我在 SO 中发现了一些类似的问题,但没有什么能真正解决我的问题。

这就是我的图表在一些数据集上的样子: enter image description here

出于某种原因,最大值 (2.2) 看起来很难看。原因是,在本例中,数据集具有一组三个重复值(2.2、2.2、2.2)。我希望在这个系列的基础上留出一些空间,这样看起来会更合理一些。

如何在系列行顶部正确添加“填充”?我想要一个可以依靠 Chart.js 找出最大值的解决方案,然后可能用刻度上的一些填充(例如 x + 10)来更新它。问题是,我不能只对最小最大值进行硬编码,因为我可以选择 200 多个不同的值,而且它们的比例可能会有很大差异。

这是我现在渲染图表的方式:

    return new Chart(context, {
    type: 'line',
    data: { 
        labels: labels.data,
        datasets: dataSets
    },
    options: {
        responsive: true,
        maintainAspectRatio: false,
        scales: {
            ticks: {
                beginAtZero: false
            },
            yAxes: [{
                ticks: {
                    beginAtZero: false
                },
                id: 'A',
                type: 'linear',
                position: 'left',
            }, {
                ticks: {
                    beginAtZero: false
                },
                display: displayBAxis,
                id: 'B',
                type: 'linear',
                position: 'right',
            }]
        }
    }
});

最佳答案

这可能不是最干净的方式,但您可以根据需要使用它。

简而言之,您需要创建一个函数来查找所有 dataSets 数组中的最大值,并在 yAxes.ticks 中将 max 设置为该函数的返回值。

下面有更多详细信息

首先引用这里:

data:{
    labels: labels.data,
    datasets: dataSets //talking about this first
}

创建一个函数来遍历这些数组并获取所有数组的最大值。我用这个做到了,但我相信你可以做得更好:

function getMax(){
    var max = 0;
    dataSets.forEach(function(x, i){        
        max = Math.max(max, Math.max.apply(null, x.data));
    });

    return max + 2;
}

然后在 yAxes 中的 return 中,您应该能够:

ticks: {
    beginAtZero: false,
    max: getMax()
},

关于javascript - Chart.js自动缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49892899/

相关文章:

javascript - DataTables - 使用 fnUpdate 更新行替换不同的行

javascript - jQuery 代码不适用于 Firefox

javascript - 具有多个图表和动态图例的 Flot Chart Crosshair 插件

java - 从 JFreeChart XY 折线图中按阈值提取峰值最大值

javascript - 更改 nvd3 图表中的边距和填充

javascript - 当工具提示出现时,顶部的 Chart.JS 值消失

javascript - MongoDB:尚未为模型 "User"注册架构

javascript - Video.js,设置指南,包含全局变量

javascript - AngularJS/ChartJS : Get the current series

javascript - chart.js:隐藏 y Axis 中的特定刻度并隐藏所有 x Axis 网格线