gpt4 book ai didi

javascript - Highcharts yAxis.max 动态管理刻度间隔

转载 作者:行者123 更新时间:2023-12-02 21:17:32 28 4
gpt4 key购买 nike

我正在尝试根据数据动态设置 y 值的最大值和最小值,但对于某些值来说存在一些问题。我认为 highchart 无法设置没有正确刻度的值。

例如:最小值:3 和最大值 10。然后,highchart 不会设置这些值,而是设置一个范围为 0...14 的值。这只是一个示例值,有时我得到的最小值为 36000.14,最大值为 454533.18。

所以我的逻辑在这种情况下不起作用。
这是我目前拥有的代码部分:

data = [3.43, 3.58, 4.86, 8.55, 8.77, 4.44, 9.67]
maximum_val = Math.ceil(maximum_val) eg: 10
minimum_val = Math.floor(minimum_val) eg: 3
evolution_options.yAxis[$('#div_count_'+div).find('#y_axis_lbl').text()] = {
min: minimum_val,
max: maximum_val,
title: false,
labels: {
style: {
color: 'black'
}
}
}

更新

fiddle :http://jsfiddle.net/e3fy1vu9/

进一步集思广益

我认为这是因为最小值不是最大值的倍数,因此 Highchart 无法计算如何分割刻度。如果有什么办法,我可以将最大值设置为最小值的倍数。

最佳答案

这是我的建议,如何根据定义的数据计算 yAxis 的最大值和最小值。

演示:https://jsfiddle.net/BlackLabel/0qwt1kx7/

  yAxis: {
min: Math.floor(Math.min(...data)),
max: Math.round(Math.max(...data)),
tickAmount: Math.round(Math.max(...data)) - Math.floor(Math.min(...data)) + 1 //1 count the min or max as itself
},

请测试一下并告诉我它是否符合您的要求。因为 tickAmount 值取决于数据数组中包含的值数量,并且对于较大的数据可能需要进行一些修改。

编辑:

尝试使用此自定义解决方案来计算 yAxis 位置:

演示:http://jsfiddle.net/BlackLabel/ztaj6Lkd/

var positions = [],
tickNumbers = 5,
tick = Math.floor(Math.min(...data));

for(let i = 0; i < tickNumbers; i++) {
positions.push((Math.round(tick * 100) / 100));
tick += Math.round(Math.max(...data)) / tickNumbers
}
//add the max
positions.push(Math.round(Math.max(...data)))

关于javascript - Highcharts yAxis.max 动态管理刻度间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60930817/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com