Я пытаюсь создать график, который обновляется по мере поступления новых значений. Чтобы метки на оси X были читаемыми, я решил слегка их повернуть, чтобы они не перекрытия.Перемещение меток с вращающейся осью с D3
Когда есть новое значение, оно нарисовано на графике, тогда путь (фактически контейнер) переводится влево при переходе.
Это, как я создать повернутые метки осей:
svg.select(".x.axis")
.call(this.xAxis)
.selectAll("text")
.style("text-anchor", "end")
.attr("dx", "-.8em")
.attr("dy", ".15em")
.attr("transform", this.axislabelrotation);
this.axislabelrotation
является:
function(d) {
return "rotate(-35)"
}
И это, как я переведет ось X:
svg = svg.transition().duration(750);
svg.select(".x.axis") // change the x axis
.call(this.xAxis)
.selectAll("text")
.style("text-anchor", "end")
.attr("dx", "-.8em")
.attr("dy", ".15em")
.attr("transform", this.axislabelrotation);
Хотя сейчас У меня есть два вопроса:
- В начале перехода метки X-оси сбрасываются на несколько пикселей, во время перехода они возвращаются вверх.
- Вновь введенные метки («2015» в примере) не вращаются в начале перехода, но вращаются в нужное состояние во время перехода.
Пример: http://jsfiddle.net/esy6wk8n/2/
Хм, проблема в том, что ось D3 не вращает метки. Вы можете попробовать пользовательскую анимацию, в которой вы поворачиваете метки на каждом шаге. –
... или, возможно, скопировать + вставить и изменить исходный код 'd3.svg.axis() для создания собственной пользовательской оси. – meetamit