diff --git a/CHANGELOG.md b/CHANGELOG.md index 73075e14..089564a9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -59,6 +59,7 @@ ## master +* (2022.10.18) 优化`Axis`的数值表现 * (2022.10.15) 修复`Axis`的`Label`在`DataZoom`开启时可能显示不正常的问题 (#227) * (2022.10.14) 增加`DataZoom`对数值轴的支持 * (2022.10.13) 修复`Pie`的环形饼图设置边框时效果异常的问题 (#225) diff --git a/Runtime/Component/Axis/AxisHandler.cs b/Runtime/Component/Axis/AxisHandler.cs index 7fc7c747..a5034a8f 100644 --- a/Runtime/Component/Axis/AxisHandler.cs +++ b/Runtime/Component/Axis/AxisHandler.cs @@ -233,7 +233,9 @@ namespace XCharts { var each = GetTick(range); tick = each; - if (range / tick > 8) + if (range / 4 % each == 0) + tick = range / 4; + else if (range / tick > 8) tick = 2 * each; else if (range / tick < 4) tick = each / 2; @@ -273,6 +275,7 @@ namespace XCharts private static double GetTick(double max) { if (max <= 1) return max / 5; + if (max > 1 && max < 10) return 1; var bigger = Math.Ceiling(Math.Abs(max)); int n = 1; while (bigger / (Mathf.Pow(10, n)) > 10) diff --git a/Runtime/Internal/Utilities/ChartHelper.cs b/Runtime/Internal/Utilities/ChartHelper.cs index 77f79b21..8a2fee39 100644 --- a/Runtime/Internal/Utilities/ChartHelper.cs +++ b/Runtime/Internal/Utilities/ChartHelper.cs @@ -635,12 +635,20 @@ namespace XCharts.Runtime n++; } double mm = bigger; + var pown = Mathf.Pow(10, n); + var powmax = Mathf.Pow(10, n + 1); + var aliquot = mm % pown == 0; if (mm > 10 && n < 38) { - mm = bigger - bigger % (Mathf.Pow(10, n)); - mm += max > 0 ? Mathf.Pow(10, n) : -Mathf.Pow(10, n); + mm = bigger - bigger % pown; + if (!aliquot) + mm += max > 0 ? pown : -pown; } - var mmm = mm - Mathf.Pow(10, n) / 2; + var mmm = mm; + if (max > 100 && !aliquot && (max / mm < 0.8f)) + mmm -= Mathf.Pow(10, n) / 2; + if (mmm >= (powmax - pown) && mmm < powmax) + mmm = powmax; if (max < 0) return -Math.Ceiling(mmm > -max ? mmm : mm); else return Math.Ceiling(mmm > max ? mmm : mm); }