C3: целое число только по оси x, y

Созданный на 15 окт. 2014  ·  9Комментарии  ·  Источник: c3js/c3

как сделать так, чтобы ось была целочисленной?
qq 20141015141217

я пробовал использовать опцию галочки:

tick: {
    format: function(x) {
        return (x == Math.floor(x)) ? x : "";
    }
}

это может сделать метку отображать только целое число, но разделительная линия на оси все равно останется.
qq 20141015141829

есть ли способ контролировать тик оси?

question resolved maybe

Самый полезный комментарий

Лучшая версия:

    axis: {
        y: {
            tick: {
                format: function(x) { return x % 1 === 0 ? x : ''; }
            }
        }
    }

Все 9 Комментарий

в текущей версии разработки (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 - получилось удовольствие.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

Kreozot picture Kreozot  ·  3Комментарии

mwho picture mwho  ·  3Комментарии

wojciechowskid picture wojciechowskid  ·  3Комментарии

Shugardude picture Shugardude  ·  4Комментарии

jstone-ponderosa picture jstone-ponderosa  ·  3Комментарии