Я создал диаграмму линии на примере здесь:d3 линии диаграмма этикетка перекрываться
http://bl.ocks.org/mbostock/3884955
Однако, с моими данными линейных меток (города) в конечном итоге перекрытие, так как конечные значения на ось y для разных линий часто близка. Я знаю, что мне нужно сравнить последнее значение для каждой строки и переместить ярлык вверх или вниз, когда значения отличаются на 12 единиц или меньше. Моя мысль взглянуть на текстовые метки, которые написаны на этом кусочке кода
city.append("text")
.datum(function(d) { return {name: d.name, value: d.values[d.values.length - 1]}; })
.attr("transform", function(d) { return "translate(" + x(d.value.date) + "," + y(d.value.temperature) + ")"; })
.attr("x", 3)
.attr("dy", ".35em")
.text(function(d) { return d.name; });
Если у (d.value.temperature) значения отличаются на 12 или меньше, перемещать значения друг от друга, пока они не имеют по крайней мере, 12 единиц между ними. Любые мысли о том, как это сделать? Это мой первый проект d3, и синтаксис все еще дает мне возможность!
Если я что-то не хватает, это только проверяет этикетки для смежных линий для перекрытия. Если, например, метка для строки 1 и метка для строки 3 перекрываются, это не будет обнаружено и исправлено с помощью этой подпрограммы. Пожалуйста, дайте мне знать, если я неверно истолковал, что делает этот код. Благодаря! –
Вы правы - это было бы учтено тем, что считало местоположение предыдущей метки, а не предыдущей точкой данных. Я хочу сказать, что почти наверняка лучше иметь отдельную легенду, если у вас проблемы с размещением этикеток. –
Точка хорошо сделана ... Спасибо, что успокоил меня, что я не пропущу что-то простое. –