mirror of
https://github.com/XCharts-Team/XCharts.git
synced 2026-05-25 18:30:14 +00:00
[improve][axis] improve max value and division of y axis
This commit is contained in:
@@ -59,6 +59,7 @@
|
|||||||
|
|
||||||
## master
|
## master
|
||||||
|
|
||||||
|
* (2022.10.18) 优化`Axis`的数值表现
|
||||||
* (2022.10.15) 修复`Axis`的`Label`在`DataZoom`开启时可能显示不正常的问题 (#227)
|
* (2022.10.15) 修复`Axis`的`Label`在`DataZoom`开启时可能显示不正常的问题 (#227)
|
||||||
* (2022.10.14) 增加`DataZoom`对数值轴的支持
|
* (2022.10.14) 增加`DataZoom`对数值轴的支持
|
||||||
* (2022.10.13) 修复`Pie`的环形饼图设置边框时效果异常的问题 (#225)
|
* (2022.10.13) 修复`Pie`的环形饼图设置边框时效果异常的问题 (#225)
|
||||||
|
|||||||
@@ -233,7 +233,9 @@ namespace XCharts
|
|||||||
{
|
{
|
||||||
var each = GetTick(range);
|
var each = GetTick(range);
|
||||||
tick = each;
|
tick = each;
|
||||||
if (range / tick > 8)
|
if (range / 4 % each == 0)
|
||||||
|
tick = range / 4;
|
||||||
|
else if (range / tick > 8)
|
||||||
tick = 2 * each;
|
tick = 2 * each;
|
||||||
else if (range / tick < 4)
|
else if (range / tick < 4)
|
||||||
tick = each / 2;
|
tick = each / 2;
|
||||||
@@ -273,6 +275,7 @@ namespace XCharts
|
|||||||
private static double GetTick(double max)
|
private static double GetTick(double max)
|
||||||
{
|
{
|
||||||
if (max <= 1) return max / 5;
|
if (max <= 1) return max / 5;
|
||||||
|
if (max > 1 && max < 10) return 1;
|
||||||
var bigger = Math.Ceiling(Math.Abs(max));
|
var bigger = Math.Ceiling(Math.Abs(max));
|
||||||
int n = 1;
|
int n = 1;
|
||||||
while (bigger / (Mathf.Pow(10, n)) > 10)
|
while (bigger / (Mathf.Pow(10, n)) > 10)
|
||||||
|
|||||||
@@ -635,12 +635,20 @@ namespace XCharts.Runtime
|
|||||||
n++;
|
n++;
|
||||||
}
|
}
|
||||||
double mm = bigger;
|
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)
|
if (mm > 10 && n < 38)
|
||||||
{
|
{
|
||||||
mm = bigger - bigger % (Mathf.Pow(10, n));
|
mm = bigger - bigger % pown;
|
||||||
mm += max > 0 ? Mathf.Pow(10, n) : -Mathf.Pow(10, n);
|
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);
|
if (max < 0) return -Math.Ceiling(mmm > -max ? mmm : mm);
|
||||||
else return Math.Ceiling(mmm > max ? mmm : mm);
|
else return Math.Ceiling(mmm > max ? mmm : mm);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user