Я использую D3 v4. У меня есть гистограмма, созданная с осью x с использованием scaleBand()
. Теперь я создал ось y, но моя проблема заключается в том, что независимо от того, как я ее позиционирую, она разрезает фактические столбцы графика.В D3 v4, как правильно совместить оси?
В верхней части моего файла JS, у меня есть:
ширина вар = 350; var height = 300;
Затем, та часть, где я на самом деле создать Y-ось:
var y = d3.scaleLinear()
.domain([0, 300000])
.rangeRound([height, 0]);
var yAxis = d3.axisRight(y);
yAxis.ticks(6);
chart.append("g")
.attr("class", "y axis")
.attr("transform", "translate(" + (width - dist_from_right) + ", 0)")
.call(yAxis);
Как видно из рисунка, ось растягивает полноту высоты SVG, снизу вверх означает, что половина из 0 обрезается, а половина из 300 000 отключается.
Первый вопрос: как я «хлюпать» (или масштабировать) ось y, чтобы она отображалась в пределах SVG?
Далее, я хочу перевести ось y так, чтобы она не врезалась в мою красную полосу. Если я попытаюсь использовать атрибут transform
, я могу нажать ось далеко справа от границ SVG, но это означает, что числа находятся за пределами границы SVG. Я также пытался увеличить переменную width
, но это ничего не делает, поскольку она пропорционально растягивает ось x.
Второй вопрос: как перемещать ось y так, чтобы она не разрезала ось x и красную полосу, а также остается видимой в окне SVG?
Спасибо!
Я думаю, вы должны создать [mcve] –