指数部を間違った場所に定義しています。あなたのpow()
スケールは、このようなexponent
定義に設定します。
var y2 = d3.scale.pow().exponent(0.5).domain([52070,1380000000]).range([10,50]);
をそして、あなたは両方のスケールのための正しい値を取得します:
var y1 = d3.scale.sqrt().domain([52070,1380000000]).range([10,50]);
var y2 = d3.scale.pow().exponent(0.5).domain([52070,1380000000]).range([10,50]);
console.log(y1(1000000))
console.log(y2(1000000))
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
:ここ
console.log(y1(1000000))//returns 10.836195102634587
console.log(y2(1000000))//returns 10.836195102634587
することは、作業の抜粋です
説明:
pow()
のかっこ内には値を入れないでください。ここに値を入れることはできますが、効果はありません。だから、あなたは何時に:のと同じだ
var y2 = d3.scale.pow(0.5).domain([52070,1380000000]).range([10,50]);
:何exponent
を持っていない、と1
のデフォルト値を使用しています
var y2 = d3.scale.pow().domain([52070,1380000000]).range([10,50]);
を。したがって、前の2つの行は同じである:ここで証明する別の断片である
var y2 = d3.scale.pow().exponent(1).domain([52070,1380000000]).range([10,50]);
その:
var test1 = d3.scale.pow(0.5).domain([52070,1380000000]).range([10,50]);
var test2 = d3.scale.pow().domain([52070,1380000000]).range([10,50]);
var test3 = d3.scale.pow().exponent(1).domain([52070,1380000000]).range([10,50]);
console.log(test1(1000000));
console.log(test2(1000000));
console.log(test3(1000000));
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>