识别 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.11 等 tickIntervals 以满足您的要求:)

以上是关于识别 yAxis 刻度间隔的主要内容,如果未能解决你的问题,请参考以下文章

matplotlib 设置坐标轴刻度

matplotlib 设置坐标轴刻度

matplotlib 设置坐标轴刻度

echarts+x轴刻度间距是啥意思?

echarts怎么能让坐标轴中心点位置没有刻度

echarts Y轴刻度保留小数设置,以及设置刻度间隔