mirror of
https://github.com/XCharts-Team/XCharts.git
synced 2026-07-06 23:03:56 +00:00
[improve][axis] improve max value and division of y axis
This commit is contained in:
@@ -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