C#里计算坐标轴的刻度步长的方法
数据范围与步长
ZedGraph 可以根据曲线中数据值的范围自动选择合适的坐标轴刻度最小值、最大值和步长值。或者,你也可以手动设置其中任意一个或所有这些值,之后刻度选择逻辑会尝试为那些仍处于自动模式的剩余参数选取合适的值。
刻度选择逻辑基于这样一个假设:最符合人类认知习惯的步长应该是 10 的整数约数。也就是说,步长应该是 1、2 或 5 乘以 10 的某个幂次方。刻度选择逻辑的核心体现在 CalcStepSize()
方法中:
protected static double CalcStepSize( double range, double targetSteps )
{
// 根据数据范围计算出临时步长
double tempStep = range / targetSteps;
// 获取步长的大小(数量级)
double mag = Math.Floor( Math.Log10( tempStep ) );
double magPow = Math.Pow( (double) 10.0, mag );
// 计算新步长的最高有效数字。
double magMsd = ( (int) ( tempStep / magPow + .5 ) );
// 将最高有效数字调整为 1、2 或 5
if ( magMsd > 5.0 )
magMsd = 10.0;
else