当前位置: 首页 > 知识库问答 >
问题:

Chart.jsv2轴中最小值和最大值的滴答

龚俊捷
2023-03-14

在Chart.js v2中,如何设置一个轴,使其始终显示数据集中最小值和最大值的刻度?该功能可能在配置选项中的某个地方,但它肯定不明显。我甚至尝试过使用插件将文本写入canvas对象,但是当我获得新数据时,可用API挂钩之外的一些东西会重新绘制位图。

下面是最新的配置,当用户导航到一个新的时间时,它由一个函数返回:

return {
    defaults: {
        global: {
            elements: {
                point: {
                    backgroundColor: 'transparent',
                    borderColor: 'transparent',
                    borderWidth: 1,
                }
            },
            line: {
                borderColor: 'rgba(0,0,0,0)',
                borderWidth: 1,
                lineTension: 0.1
            }
        }
    },
    type: 'line',
    responsive: true,
    data: {datasets: this.chartData},
    colors: [],
    labels: [],
    plugins: [
        // These are diagnostic checks for writing to canvas;
        // they fire and work on page load, but once data is loaded they vanish and never re-appear.
        // todo: find out what keeps resetting the chart's canvas tag AFTER the API hooks are done.
        {afterDraw: function (chart, options) {
            console.log('afterDraw');
            if (chart.chartArea === undefined) { return; }
            chart.ctx.fillText('afterDraw', chart.chartArea.left, chart.chartArea.bottom + 30);
        }}
        // Similar additions with the same job have been omitted; no sense in repeating them
    ],
    options: {
        animation: false,
        hover: {
            animationDuration: 0
        },
        responsiveAnimationDuration: 0,
        layout: {
            padding: {
                left: 10,
                right: 10,
                top: 10,
                bottom: 0
            }
        },
        legend: {
            display: false,
            position: 'bottom',
            labels: {
                boxWidth: 80,
                fontColor: 'black'
            }
        },
        maintainAspectRatio: false,
        scales: {
            ticks: {
                autoSkip: false,
                major: {
                    enabled: false
                },
                min: moment(TimeSpan.fromMidnightOf(this.timeSpan.startMs)),
                max: moment(TimeSpan.toMidnightOf(this.timeSpan.startMs)),
                source: 'data'
            },
            xAxes: [{
                gridLines: {
                    display: false,
                    color: 'black'
                },
                scaleLabel: {
                    display: true,
                    labelString: 'Time',
                    fontColor: 'black'
                },
                type: 'time',
                ticks: {
                    padding: -5,
                    suggestedMin: moment(TimeSpan.fromMidnightOf(this.timeSpan.startMs)),
                    suggestedMax: moment(TimeSpan.toMidnightOf(this.timeSpan.startMs))
                },
                time: {
                    displayFormats: {
                        // Overwriting the formats with a string value here
                        'hour': this.getFormatForTimeSpan(),
                        'day': this.getFormatForTimeSpan(),
                        'week': this.getFormatForTimeSpan(),
                        'month': this.getFormatForTimeSpan(),
                        'year': this.getFormatForTimeSpan(),
                    },
                    max: moment(TimeSpan.toMidnightOf(this.timeSpan.startMs)),
                    min: moment(TimeSpan.fromMidnightOf(this.timeSpan.startMs)),
                    unit: this.timeSpan.getTimeSpanUnit(),
                    unitStepSize: 1
                }
            }],
            yAxes: [{
                gridLines: {
                    color: 'black',
                    display: false
                },
                scaleLabel: {
                    display: true,
                    labelString: 'Average Reading',
                    fontColor: 'black'
                },
                ticks: {
                    beginAtZero: true
                }
            }]
        },
        scaleShowValues: true,
        tooltips: {
            position: 'nearest',
            mode: 'index',
            intersect: false,
        },
    }
};

如果有人能指出配置中的任何缺陷,我很想听听他们有什么话要说......

共有1个答案

姬实
2023-03-14

来自文档:www.chartjs.org/docs/latest/axes/

可以使用缩放服务轻松更改比例的默认配置。您需要做的就是传入一个部分配置,该配置将与当前比例默认配置合并以形成新的默认配置。

例如,要为所有线性刻度设置最小值0,您可以执行以下操作。在此时间之后创建的任何线性刻度现在的最小值为0。

Chart.scaleService.updateScaleDefaults('线性',{

ticks: {

    min: 0

}

});

 类似资料:
  • 问题内容: 我的代码没有给出错误,但是没有显示最小值和最大值。代码是: 我是否需要system.out.println()来显示它,否则返回应该起作用吗? 问题答案: 您正在调用方法,但不使用返回的值。

  • 这是一个非常基本的算法(不能再简单了),但我被难住了。我们有一个元素数组,我们必须确定最小值和最大值。 通常的方法是遍历数组,找出最小值和最大值,即2n比较。 稍微有效的方法是首先对数组的连续元素进行比较,以确定任意两个元素的最大值和最小值(N/2比较)。我们现在有n/2 min和n/2 max元素。现在我们可以在n/2+n/2+n/2(前一步)=3/2*n或1.5n中得到最终的max和min 那

  • 我正在编写一个代码,用户会被问到:“有多少个标记?”然后他们输入他们提到的分数。然后,它打印出最大标记和最小标记。 我不是最擅长编码的,所以我没有方向去寻找循环中的最大值和最小值。我找到了他们能够输入标记的部分,但我不确定如何找到最大值和最小值。我查找了如何进行最大值和最小值,但它通常显示为在数组中查找最大值和最小值,这不是我想要做的。

  • 问题内容: 我正在寻找python中整数的最小值和最大值。例如,在Java中,我们有和。python中是否有类似的东西? 问题答案: Python 3 在Python 3中,此问题不适用。普通int类型是无界的。 但是,你实际上可能正在寻找有关当前解释器的字长的信息,在大多数情况下,该信息将与机器的字长相同。该信息在Python 3中仍以形式提供,这是一个有符号的单词可以表示的最大值。等效地,它是

  • 主要内容:普通算法,分治算法程序中,我们经常使用数组(列表)存储给定的线性序列(例如 {1,2,3,4}),那么如何查找数组(序列)中的最大值或者最小值呢? 查找数组(序列)中最大值或最小值的算法有很多,接下来我们以 {3,7,2,1} 序列为例讲解两种查找最值的算法,一种是普通算法,另一种是借助 分治算法解决。 普通算法 普通算法的解决思路是:创建两个变量 max 和 min 分别记录数组中的最大值和最小值,它们的初始值都

  • 我试图了解两个线程是更新的的可能值是什么,当我运行程序时输出总是20,但我想了解为什么它会发生以及什么是mimumum,的最大值