как сделать так, чтобы ось была целочисленной?
я пробовал использовать опцию галочки:
tick: {
format: function(x) {
return (x == Math.floor(x)) ? x : "";
}
}
это может сделать метку отображать только целое число, но разделительная линия на оси все равно останется.
есть ли способ контролировать тик оси?
в текущей версии разработки (master) вы можете использовать axis.y.values для установки списка тиков. например
{
axis: {
y: {
ticks: [1,2,3]
}
}
}
но это не может быть динамическим в зависимости от источника данных, я прав?
Вы можете вычислить эти значения после загрузки данных, установить их на chart.internal.config.axis_y_tick_values
а затем вызвать chart.flush()
для применения новых значений оси.
Как насчет этого кода?
axis: {
y: {
tick: {
format: function (x) {
if (x != Math.floor(x)) {
var tick = d3.selectAll('.c3-axis-y g.tick').filter(function () {
var text = d3.select(this).select('text').text();
return +text === x;
}).style('opacity', 0);
return '';
}
return x;
}
}
}
}
Кажется, это уже решено, поэтому позвольте мне закончить.
FWIW, требующий знания внутреннего устройства D3 и запуска JS, кажется действительно странным. Я часто вижу эту закономерность в этих проблемах C3: у кого-то есть проблема, и вместо того, чтобы предлагать вариант C3, приемлемым решением является 5-30 строк javascript, которые управляют базовым SVG с d3. Я думаю, что в конечном итоге это нанесет огромный ущерб принятию C3.
В частности, для этой проблемы невероятно ценным будет параметр "axis.y.tick.integer_only". Я бы хотел предоставить для этого расширение C3. Я вижу пример расширения здесь . Есть ли где-нибудь руководство по расширению, которое может мне помочь?
Благодаря!
Изменить: грамматика.
Вы можете вычислить эти значения после загрузки данных, установить для них значение chart.internal.config.axis_y_tick_values, а затем вызвать chart.flush () для применения новых значений оси.
Ссылаясь на это, потому что у меня тоже была эта проблема сегодня - выполнение flush()
испортит анимацию изменения данных, а добавление задержки также имеет некоторые графические сбои. Однако установка правильного значения chart.internal.config.axis_y_tick_values
перед вызовом load()
работает отлично. Может, это кому-то будет полезно :).
Лучшая версия:
axis: {
y: {
tick: {
format: function(x) { return x % 1 === 0 ? x : ''; }
}
}
}
Спасибо nnabinh - получилось удовольствие.
Самый полезный комментарий
Лучшая версия: