Javascript 如何在海图中为轴设置静态最小值
我有从1到500的基于时间的数据。时间绘制在x轴上,值绘制在y轴上 当最小和最大数据点之间的范围很大时,y轴的开始标签为0。通过设置Javascript 如何在海图中为轴设置静态最小值,javascript,highcharts,Javascript,Highcharts,我有从1到500的基于时间的数据。时间绘制在x轴上,值绘制在y轴上 当最小和最大数据点之间的范围很大时,y轴的开始标签为0。通过设置yAxis.startOnTick=false,我可以告诉Highcharts不要显示标签
yAxis.startOnTick=false,我可以告诉Highcharts不要显示标签但这不是我真正想要的
对于无法判断第一个点是0还是其他值的问题。这里的0看起来也是y的最小范围
0,而不是1
Highcharts是否可以显示第一个标签,并且第一个标签应始终设置为数据集中的最小值(相对于其轴)。我很惊讶这是多么困难。不是最佳解决方案,但HighChart api的最佳解决方案:
var someData = [1,5,82,9,300,5,42,199,5,6,99,1,56,52,250,64];
var chart = new Highcharts.Chart({
chart: {
renderTo: 'container'
},
yAxis:{
min: -10,
tickInterval: 1,
labels: {
formatter: function() {
if (this.value < someData[0])
return null;
else if (this.value == someData[0])
return this.value;
else if (this.value % 50 == 0)
return this.value;
}
}
},
series: [{
data: someData
}]
});
var someData=[1,5,82,9300,5,42199,5,6,99,1,56,52250,64];
var图表=新的Highcharts.图表({
图表:{
renderTo:“容器”
},
亚克斯:{
最小:-10,
时间间隔:1,
标签:{
格式化程序:函数(){
if(this.value
优化的解决方案是将yAxis.labels.formatter
与this.isFirst
和this.axis.dataMin
一起使用,如下所示:
yAxis:{
labels: {
formatter: function() {
if(this.isFirst)
return this.axis.dataMin;
return this.value;
}
}
}
有关示例,请参见
这样做的好处是,您不必手动设置tickInterval
,这样可以节省大量对formatter
的调用,并让Highcharts自己计算标签间隔。此外,它使用最小数据值的axis知识,而不必检查数组(您可能需要遍历数组以找到最小值)
请注意,此处必须将yAxis.min
设置为合理的值(最适合0
和正数据)。如果y轴远低于最小数据点,则第一个标签将不是0处的标签
询问此问题时,this.axis
值不可用。+1。这比我想到的要好得多-我只是告诉Highcharts当标签为“0”时,显示“1”。我需要对数据进行一些额外的预处理,以使您的解决方案100%使用我的数据集,即设置适当的刻度间隔并确定数据集中的最低值。谢谢哦,当Highcharts想要将第一个标签设置为“0”时,我可能还会做一些额外的处理,仅将tickInterval设置为1,除非在调用labels.formatter
多达500次时确实没有太多开销。这在版本4中不再有效。我仍在搜索解决方案。@sylouuu似乎仍在使用v4:,只是必须更新js include。