D3, не может редактировать количество тиков с порядковой шкалой? - программирование
Подтвердить что ты не робот

D3, не может редактировать количество тиков с порядковой шкалой?

Я задал вопрос раньше о d3, и они предложили мне использовать порядковый масштаб, это решило бы мои проблемы. Действительно, он решил мои проблемы, но знаю, что я застрял в другой проблеме...

Он отлично рисуется, но моя ось X полна текста. В качестве примера я хочу: 1900 1904 1908 1912... но я получил: 190119021903190419051906. Как видите, это не ясно. (это всего лишь пример, если бы были только даты, я мог бы использовать другую шкалу). Везде, где я смотрел, они говорят о axis.ticks(number). Но это не работает. Ничего не происходит, и я все равно получаю тот же результат. Я взломал результат, чтобы получить меньшие результаты по оси x:

  var str = [];
  var i = 0;
  while(i < data.length) {
      str.push(data[i].age);
      i=i+8;
  }
  x.domain(str);

Но если я это сделаю, он создаст случайную строку и больше не рисует ее. Не знаю, как это решить. Это простая линейная диаграмма, ничего сложного, единственная трудность (для меня) - порядковая шкала...

Надеюсь, кто-то может мне помочь.

так определяется моя ось x и x:

var x = d3.scale.ordinal()
    .rangeRoundBands([0, width-150],1);

var xAxis = d3.svg.axis()
    .scale(x)
    .orient("bottom")

без цикла while (неприятный взлом), у меня была следующая строка, определяющая x.domain:

x.domain(data.map(function(d) { return d.age; }));
4b9b3361

Ответ 1

Посмотрите документацию для осей, в частности функцию ticks(). Вы можете использовать его (или tickValues()), чтобы определить, сколько (и каких) значений вы хотите показать.

Если вы работаете с датами, вы можете использовать временной масштаб вместо порядкового. В частности, это позволит вам контролировать тики более значимым образом, например. укажите, что вы хотите тики каждые пять лет.