识别 yAxis 刻度间隔
Posted
技术标签:
【中文标题】识别 yAxis 刻度间隔【英文标题】:identify yAxis tick interval 【发布时间】:2016-03-01 09:54:46 【问题描述】:我正在使用 highcharts 显示各个部门每季度的总收入(以千英镑为单位)。
有时部门的收入很少。在这种情况下,y 轴值包含 2 个小数位
有时收入较大,y轴值包含1个小数位
而且有时值非常大,y轴值不包含任何小数位
Fiddle to demonstrate different formatting
我遇到的问题是 y 轴的当前格式看起来不对。
我需要根据刻度间隔设置 y 轴值的小数位数:- 小值(即 0.25、0.5、0.75、1 等)需要格式化为 2 位小数。 较大的值(即 0.5、1、1.5、2 等)需要格式化为小数点后 1 位。 非常大的值(即 80、90、100、110 等)不需要小数位。
实际值最多可保留 3 位小数(例如 0.306、0.518(小)1.429、1.806(大)102.429、160.806(非常大))
我的代码构建了一个脚本字符串,然后使用 ScriptManager.RegisterStartupScript 运行脚本。
我尝试根据值设置小数位数
Dim yAxisValue as Double= 0
Dim numberOfDP as Integer = 0
...
While reader.Read
If yAxisValue < reader.Item("YAxisValues").ToString Then
yAxisValue = reader.Item("YAxisValues").ToString
If Val(yAxisValue) < 1 Then
numberOfDP = 2
ElseIf Val(yAxisValue) < 10 Then
numberOfDP = 1
End If
End If
End While
MyScript = MyScript & "yAxis: " & vbCrLf
MyScript = MyScript & "labels: " & vbCrLf
MyScript = MyScript & "style: color: 'black'," & vbCrLf
MyScript = MyScript & "'fontSize': '11pt'," & vbCrLf
MyScript = MyScript & "format: 'value:. & numberOfDP & f'" & vbCrLf
MyScript = MyScript & "" & vbCrLf
MyScript = MyScript & "" & vbCrLf
但我宁愿根据实际滴答间隔进行格式设置。
有什么办法可以做到吗?
【问题讨论】:
【参考方案1】:我不确定 ScriptManager.RegisterStartupScript
,但在 Highcharts 中您可以设置 yAxis.labels.formatter
并确定应该显示多少小数,例如:
function formatter ()
var dec = this.axis.tickInterval > 1 ? 0 : (this.axis.tickInterval > 0.1 ? 1 : 2);
return this.value.toFixed(dec);
现在只需在 yAxis 选项中使用:
yAxis:
labels:
formatter: formatter
,
还有现场演示:https://jsfiddle.net/4y8n33ob/
【讨论】:
感谢它,它是一种享受。由于一些模糊的滴答间隔,我不得不稍微调整一下,但如果没有你的回答,我会迷路 当然,这只是一个想法。应更改0.1
与 1
等 tickIntervals 以满足您的要求:)以上是关于识别 yAxis 刻度间隔的主要内容,如果未能解决你的问题,请参考以下文章