mirror of
https://github.com/XCharts-Team/XCharts.git
synced 2026-05-14 20:00:09 +00:00
[improve][axis] improve max value and division of y axis
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user