C3: Gráfico logarítmico

Criado em 20 mai. 2014  ·  16Comentários  ·  Fonte: c3js/c3

Olá pessoal,
Pesquisei um pouco aqui e na página de exemplos, mas não encontrei nada sobre eixos em escala de logaritmo. É possível criá-los? Caso contrário, considere isso como um pedido de recurso.
Atenciosamente,
Yakov.

C-feature-request C-new-chart

Comentários muito úteis

isso é um hack muito feio. seria possível expor uma API que permite que qualquer escala d3 seja plugada?

Todos 16 comentários

Oi, desculpe, atualmente não. Agora você precisa gerar os dados em escala de logaritmo sozinho e plotar.
Vou considerar como um novo recurso mais tarde.

Olá Masayuki,

você precisa gerar os dados em escala de logaritmo

quer dizer que agora é possível emular esse recurso? Eu olhei os exemplos #Axis, mas não encontrei uma maneira de colocar os ticks em posições arbitrárias. Que exemplo devo examinar?
Atenciosamente e obrigado pelo seu tempo e trabalho,
Yakov.

Ao preparar seus dados, converta-os em escala logarítmica. Em Python, digamos que você tenha uma lista como esta

[100,1000,10000]

Você acabou de fazer isso

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

Uma implementação da solução alternativa de Masayuki:

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 ,, funciona para mim! thx ... mas quando eu tenho o valor 0 em data1, não funciona, como posso lidar com o valor 0? obrigado

o seguinte também formata os valores:

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); }
            }
        }
    },
});

isso é um hack muito feio. seria possível expor uma API que permite que qualquer escala d3 seja plugada?

+1 ... eu preciso desenhar um gráfico em escala logarítmica.

Também gostaria de poder definir meu (s) eixo (s) y como log

Eu também gostaria de poder usar uma escala logarítmica para o eixo y.

Alguma novidade sobre isso?

Tentei resolver este problema (# 2100). Isso não é 100% perfeito, mas pode ser suficiente para muitos casos.

Tentei uma solução alternativa

mas quando o valor dos dados é 1, o eixo y estava começando em 1. também quando o valor dos dados era 0, o gráfico não era renderizado.

eu fiz algumas soluções alternativas para isso.
consulte este JSFiddle https://jsfiddle.net/86chryat/

d3.js oferece suporte direto à escala de log em um eixo, então seria muito bom se isso pudesse ser mostrado em c3. É uma solução muito melhor do que recomputar os dados, porque também lida com os ticks.

Eu concordo que a escala logarítmica seria útil

@ masayuki0812 - ao fechar isso, significa que você não considerará o suporte para ele? É realmente um recurso crítico para certos aplicativos. Seria ótimo ter uma integração adequada se você tiver tempo / inclinação, por favor.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

zachallia picture zachallia  ·  3Comentários

aishwaryak picture aishwaryak  ·  4Comentários

Zerim picture Zerim  ·  3Comentários

kethomassen picture kethomassen  ·  3Comentários

wojciechowskid picture wojciechowskid  ·  3Comentários