如果用 均分计算出来,这样的刻度值会带小数,而且不符合日常习惯
比如
<html lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<style>
input {
width:250px;height:50px;
font-size:24px;;
}
</style>
</head>
<body>
<canvas id=c width=600 height=400px style="border:1px solid grey"></canvas>
<form name='f' >
下限: <input name='min' onblur='draw()' value="-394"/>
上限: <input name='max' onblur='draw()' value="9349"/>
</form>
<script>
function rand(min, max) {
var range = max - min + 1;
return Math.floor(Math.random() * range + min);
}
var myCanvas = document.getElementById("c");
var c = myCanvas.getContext("2d");
var w = 600;
var h = 400;
function draw() {
c.clearRect(0, 0, w, h);
var max = parseInt(document.f.max.value);
var min = parseInt(document.f.min.value);
var ratio = (max - min) / w;
var tickSize = 50;
var tickCnt = Math.ceil(w / tickSize);
var unit = tickSize * ratio;
c.moveTo(0, h - 30);
c.lineTo(w, h - 30);
for (var i = 0; i < tickCnt; i++) {
c.moveTo(0 + tickSize * i, h - 30);
c.lineTo(0 + tickSize * i, h - 20);
c.textAlign = 'center';
c.fillText((min + unit * i).toFixed(2), 0 + tickSize * i, h - 10);
}
c.stroke();
}
</script>
</html>
怎么样根据数据范围自动生成符合日常习惯的刻度值
比如 范围是 -324到 7219
刻度是类似 -1000,0,1000,2000,3000,4000,5000,6000,7000,8000,9000,10000 这种的
你这个想法不现实 这个也实在太均分了 也太智能了
给你个参考 首先把所有的数字全移动到正值
比如-394到7349 就是0到9000 然后取对数
我假设是10-100000就是10^1 到10^5
然后把1-5均分 按对数画图 这个是比较现实可行的 没你那么智能的。。