Вместо обычного масштаба журнала (d3.scaleLog()
) используйте шкалу symlog (d3.scaleSymlog()
), которая допускает ноль в домене.
Вот демонстрационная программа с обычным масштабом журнала и нулем в домене (не получится, ничего не появится):
const svg = d3.select("svg")
const scale = d3.scaleLog()
.domain([0, 1000])
.range([20, 480])
const axis = d3.axisBottom(scale)(svg.append("g").attr("transform", "translate(0,50)"))
<script src="https://d3js.org/d3.v5.min.js"></script>
<svg width="500" height="100"></svg>
Теперь тот же код с d3.scaleSymlog()
:
const svg = d3.select("svg")
const scale = d3.scaleSymlog()
.domain([0, 1000])
.range([20, 480])
const axis = d3.axisBottom(scale)(svg.append("g").attr("transform", "translate(0,50)"))
<script src="https://d3js.org/d3.v5.min.js"></script>
<svg width="500" height="100"></svg>