刻度轴 规范值算法
来源:互联网 发布:python使用领域 编辑:程序博客网 时间:2024/04/29 04:31
//CorMax 数据最大值
//CorMin 数据最小值
//CorNumber 刻度个数
public void Standard(ref double CorMax, ref double CorMin, int CorNumber)
{
double tmpMax, tmpMin;
double CorStep, tmpStep;
int tmpNumber;
double temp;
int extraNumber;
if (CorMax > CorMin)
{
//计算原始步长
CorStep = (CorMax - CorMin) / CorNumber;
//计算步长的数量级
if (Math.Pow(10, (int)(Math.Log(CorStep) / Math.Log(10))) == CorStep)
{
temp = Math.Pow(10, (int)(Math.Log(CorStep) / Math.Log(10)));
}
else
{
temp = Math.Pow(10, (int)(Math.Log(CorStep) / Math.Log(10)) + 1);
}
//将步长修正到(O,1)问
tmpStep = CorStep / temp;
//选取规范步长
if (tmpStep >= 0 && tmpStep <= 0.1)
{
tmpStep = 0.1;
}
else if (tmpStep >= 0.100001 && tmpStep <= 0.2)
{
tmpStep = 0.2;
}
else if (tmpStep >= 0.200001 && tmpStep <= 0.25)
{
tmpStep = 0.25;
}
else if (tmpStep >= 0.25001 && tmpStep <= 0.5)
{
tmpStep = 0.5;
}
else
{
tmpStep = 1;
}
//规范步长按数量级还原
tmpStep = tmpStep * temp;
//修正起点值
if ((int)(CorMin / tmpStep) != (CorMin / tmpStep))
{
CorMin = (int)(CorMin / tmpStep) * tmpStep;
}
if ((int)(CorMax / tmpStep) != (CorMax / tmpStep))
{
CorMax = (int)(CorMax / tmpStep + 1) * tmpStep;
}
//看最后修正是否必要,包括:刻度数、起点值、终点值
tmpNumber = Convert.ToInt32((CorMax - CorMin) / tmpStep);
if (tmpNumber < CorNumber)
{
extraNumber = CorNumber - tmpNumber;
if (extraNumber % 2 == 0)
{
CorMax = CorMax + tmpStep * (int)(extraNumber / 2);
}
else
{
CorMax = CorMax + tmpStep * (int)(extraNumber / 2 + 1);
}
CorMin = CorMin - tmpStep * (int)(extraNumber / 2);
if (CorMin < 0)
{
CorMax = CorMax - CorMin;
CorMin = 0;
}
}
CorNumber = tmpNumber;
}
}
//CorMin 数据最小值
//CorNumber 刻度个数
public void Standard(ref double CorMax, ref double CorMin, int CorNumber)
{
double tmpMax, tmpMin;
double CorStep, tmpStep;
int tmpNumber;
double temp;
int extraNumber;
if (CorMax > CorMin)
{
//计算原始步长
CorStep = (CorMax - CorMin) / CorNumber;
//计算步长的数量级
if (Math.Pow(10, (int)(Math.Log(CorStep) / Math.Log(10))) == CorStep)
{
temp = Math.Pow(10, (int)(Math.Log(CorStep) / Math.Log(10)));
}
else
{
temp = Math.Pow(10, (int)(Math.Log(CorStep) / Math.Log(10)) + 1);
}
//将步长修正到(O,1)问
tmpStep = CorStep / temp;
//选取规范步长
if (tmpStep >= 0 && tmpStep <= 0.1)
{
tmpStep = 0.1;
}
else if (tmpStep >= 0.100001 && tmpStep <= 0.2)
{
tmpStep = 0.2;
}
else if (tmpStep >= 0.200001 && tmpStep <= 0.25)
{
tmpStep = 0.25;
}
else if (tmpStep >= 0.25001 && tmpStep <= 0.5)
{
tmpStep = 0.5;
}
else
{
tmpStep = 1;
}
//规范步长按数量级还原
tmpStep = tmpStep * temp;
//修正起点值
if ((int)(CorMin / tmpStep) != (CorMin / tmpStep))
{
CorMin = (int)(CorMin / tmpStep) * tmpStep;
}
if ((int)(CorMax / tmpStep) != (CorMax / tmpStep))
{
CorMax = (int)(CorMax / tmpStep + 1) * tmpStep;
}
//看最后修正是否必要,包括:刻度数、起点值、终点值
tmpNumber = Convert.ToInt32((CorMax - CorMin) / tmpStep);
if (tmpNumber < CorNumber)
{
extraNumber = CorNumber - tmpNumber;
if (extraNumber % 2 == 0)
{
CorMax = CorMax + tmpStep * (int)(extraNumber / 2);
}
else
{
CorMax = CorMax + tmpStep * (int)(extraNumber / 2 + 1);
}
CorMin = CorMin - tmpStep * (int)(extraNumber / 2);
if (CorMin < 0)
{
CorMax = CorMax - CorMin;
CorMin = 0;
}
}
CorNumber = tmpNumber;
}
}
0 0
- 刻度轴 规范值算法
- 图表轴刻度的思路,算法: 转载2【关于坐标轴刻度取值的问题】
- 图表轴刻度的思路,算法: 转载1【最简易的坐标刻度校正算法】
- 图表轴刻度的思路,算法: 转载4【Excel是如何自动计算坐标轴刻度】
- 图表轴刻度的思路,算法: 转载3【求算法:图表控件,如何确定坐标轴的范围和刻度?】
- C#生成柱状图,包括刻度,刻度值.
- 画统计图、柱状图X轴、Y轴的刻度坐标标度算法
- 实现echarts插件刻度轴的二级刻度
- Highcharts属性与Y轴数据值刻度显示Y轴最小最大值
- 控制Highcharts中x轴和y轴坐标值的刻度
- Highcharts属性与Y轴数据值刻度显示Y轴最小最大值
- Highcharts属性与Y轴数据值刻度显示Y轴最小最大值
- 如何设置highcharts没有X和Y轴且X轴无刻度值
- jfreechart数据轴刻度如何自己设置
- highcharts y轴单位/刻度 自定义
- Excel2016中设置X轴的刻度
- tikz-示例-x轴坐标竖线刻度
- R plot y轴数字刻度改变
- iOS-UIKit(UIWebView.h--解读)
- Android简便通用的SimpleBaseAdapter
- 黑马程序员——I/O
- addEventListener() 方法 实例 点用户点击按钮时触发监听事件:
- 提升UITableView性能-复杂页面的优化
- 刻度轴 规范值算法
- Spring+SpringMVC+mybatis+easyui整合实例----使用mybatis拦截器分页
- Xcode编译Undefined symbols for architecture xxx 错误总结
- linux sybase ase 数据库恢复
- iOS开发003 一个漂亮精致的HUD
- 数据库的并运算和差运算
- PHP反射
- Yahoo Stocks
- 关于shell下出现"未预期的符号问题"