C3: Логарифмический график

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

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

C-feature-request C-new-chart

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

это довольно уродливый хакер. Можно ли было бы предоставить API, который позволяет подключать любую шкалу d3?

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

Привет, извините, в настоящее время нет. Теперь вам нужно самостоятельно сгенерировать данные с логарифмической шкалой и построить график.
Я рассмотрю как новую функцию позже.

Привет Масаюки,

вам нужно сгенерировать данные с логарифмической шкалой

Вы имеете в виду, что теперь можно эмулировать эту функцию? Я просмотрел примеры #Axis, но не заметил способа поставить галочки в произвольных положениях .. Какой пример мне следует изучить?
С уважением и благодарностью за ваше время и вашу работу,
Яков.

При подготовке данные конвертируются в логарифмическую шкалу. В Python предположим, что у вас есть такой список

[100,1000,10000]

Ты просто сделай это

import math
log_list = map(math.log10,[100,1000,10000])

Реализация обходного пути Масаюки:

data_test_original = ['data1', 10, 100, 1000, 3, 500, 50, 5, 3000]
data_test = ['data1'];
for(var i=1; i<data_test_original.length; i++){
    data_test[i] = Math.log(data_test_original[i]) / Math.LN10;
}

var chart_test = c3.generate({
    bindto: '#chart_test',
    size: {
        height: 240,
        width: 480
    },
    data: {
      columns: [
        data_test
      ]
    },
    axis : {
        y : {
            tick: {
               format: function (d) { return Math.pow(10,d).toFixed(2); }
            }
        }
    },
});

hai @pbustosl ,, это работает для меня! спасибо ... но когда у меня есть значение 0 в data1, это не работает, как я могу обрабатывать значение 0? Благодарность

следующее также отформатирует значения:

data_test_original = ['data1', 10, 100, 1000, 3, 500, 50, 5, 3000]
data_test = ['data1'];
for(var i=1; i<data_test_original.length; i++){
    data_test[i] = Math.log(data_test_original[i]) / Math.LN10;
}

var chart_test = c3.generate({
    size: {
        height: 240,
        width: 480
    },
    data: {
        type:"bar",
      columns: [
        data_test
      ],
      labels : {show:true,
          format: {
              data1 : function(d,id){console.log(id, Math.pow(10,d));return Math.pow(10,d).toFixed(0);}
          }
      }
    },
    axis : {
        y : {
            show:false,
            tick: {
               format: function (d) { return Math.pow(10,d).toFixed(0); }
            }
        }
    },
});

это довольно уродливый хакер. Можно ли было бы предоставить API, который позволяет подключать любую шкалу d3?

+1 ... Мне нужно нарисовать диаграмму в логарифмическом масштабе.

Я также хотел бы, чтобы моя ось Y была по журналу

Я тоже хотел бы иметь возможность использовать логарифмическую шкалу для оси y.

Есть новости по этому поводу?

Пытался решить эту проблему (# 2100). Это не на 100% идеально, но во многих случаях этого может быть достаточно.

Я попробовал обходной путь

но когда значение данных равно 1, ось y начиналась с 1. также, когда значение данных было 0, диаграмма не отображалась.

Я сделал для этого обходной путь.
пожалуйста, обратитесь к этому JSFiddle https://jsfiddle.net/86chryat/

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

Я согласен, что шкала журнала будет полезна

@ masayuki0812 - означает ли это, что закрывая это, вы не будете рассматривать возможность его поддержки? Это действительно важная функция для некоторых приложений. Было бы здорово иметь надлежащую интеграцию, если у вас есть время / желание.

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