d3バージョンをv4からv6にアップグレードしたばかりで、グラフの描画方法に変更を加えていません。以前は、最小データ値と最大データ値がすべて0であったときに、y = 0のx軸がチャートの下部に設定されていました。これは、私が保持しようとしているものです。これで、d3が何らかの理由でチャートの中央に移動したように見えます。左側のv4と右側のv5とv6:v4からv5に移行したときにもこの変更に気づきましたが、変更ログには、yScaleの変更について説明しているものが見つかりません。これは、yScale.domainが([0,0])に設定されている場合にのみ発生しますが、正または負の値がある場合は、チャートの下部または上部に正しく配置されます。
私はあちこちを検索してドメインを変更しようとしましたが、うまくいきませんでした。何が変わったのか、あるいは次に何を試すべきかについて別の考えを知っている人はいますか?ありがとうございました。
それは意図的な決定でした(そのユーザー、mbostockはD3作成者です):https://github.com/d3/d3-scale/issues/117
簡単な修正としてできることは、スケールのドメイン値を事前にチェックすることです。それらが同じである場合は、戻り値を範囲の先頭に設定します。
const scale = d3.scaleLinear().domain([0, 0]).range([0, 10]);
const value = 0
//this is the current expected result
console.log(scale(value));
//check the domain values first
console.log(scale.domain()[0] === scale.domain()[1] ? scale.range()[0] : scale(value))
<script src="https://d3js.org/d3.v6.min.js"></script>
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加