我使用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
但我宁愿将格式基于实际的滴答间隔。
我有什么方法可以做到这一点吗?
答案 0 :(得分: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/