Вот JSFiddle: http://jsfiddle.net/8p2yc/ (слегка измененный пример здесь: http://bl.ocks.org/mbostock/3883245)Как установить метки ярлыка переменной длины на линейной диаграмме D3?
Как вы можете видеть в JSFiddle тик метки вдоль оси у не помещаются в SVG. Я знаю, что могу увеличить левый запас, но дело в том, что я не знаю, какие данные будут заблаговременно. Если я просто сделаю маржу очень большой, диаграмма будет выглядеть неловко, если числа будут короткими по длине.
Есть ли способ прекомпилировать максимальную ширину ярлыка при создании диаграммы для правильной установки поля? Или, может быть, есть совсем другое решение?
var margin = {top: 20, right: 20, bottom: 30, left: 50},
width = 400 - margin.left - margin.right,
height = 200 - margin.top - margin.bottom;
var svg = d3.select("body").append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");
Спасибо!
Звучит неплохо, только одна потенциальная проблема, я думаю. Наибольшее число не обязательно является самым длинным с точки зрения количества символов. например 1 и 0,22323332. Что было бы лучшим способом узнать «длинный» номер после форматирования? thx v much – vrepsys
Хорошо, я уточню ответ. –
Я думаю, что может возникнуть проблема, когда правая сторона графика будет отрезана, если правое поле станет большим.Должно быть легко исправить, если отрегулировать ширину в зависимости от рассчитанной maxWidth. Не стесняйтесь редактировать ответ, он примет в любом случае. thx – vrepsys