C3: Gráfico logarítmico

Creado en 20 may. 2014  ·  16Comentarios  ·  Fuente: c3js/c3

Hola a todos,
He buscado un poco aquí y en la página de ejemplos, pero no he encontrado nada sobre los ejes de escala logarítmica. ¿Es posible crearlos? Si no es así, considérelo como una solicitud de función.
Atentamente,
Yakov.

C-feature-request C-new-chart

Comentario más útil

eso es un truco bastante feo. ¿Sería posible exponer una API que permita conectar cualquier báscula d3?

Todos 16 comentarios

Hola, lo siento, actualmente no. Ahora debe generar los datos en escala de logaritmos usted mismo y trazar.
Lo consideraré como una nueva característica más adelante.

Hola Masayuki,

necesitas generar los datos en escala de logaritmos

¿Quiere decir que ahora es posible emular esta función? He revisado los ejemplos de #Axis, pero no he notado una forma de colocar los ticks en posiciones arbitrarias. ¿Qué ejemplo debo buscar?
Saludos cordiales y gracias por su tiempo y su trabajo,
Yakov.

Cuando prepare sus datos, conviértalos a escala logarítmica. En Python, digamos que tiene una lista como esta

[100,1000,10000]

Tu solo haz esto

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

Una implementación de la solución 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 , ¡es un trabajo para mí! gracias ... pero cuando tengo el valor 0 en data1, no funciona, ¿cómo puedo manejar el valor 0? Gracias

lo siguiente también formatearía los 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); }
            }
        }
    },
});

eso es un truco bastante feo. ¿Sería posible exponer una API que permita conectar cualquier báscula d3?

+1 ... Necesito dibujar un gráfico en escala logarítmica.

También me gustaría tener la capacidad de configurar mi (s) eje (s) y por log

A mí también me gustaría poder usar una escala logarítmica para el eje y.

¿Alguna noticia sobre esto?

Intenté abordar este problema (# 2100). Esto no es 100% perfecto, pero puede ser suficiente para muchos casos.

Probé la solución alternativa

pero cuando el valor de los datos es 1, el eje y comenzaba desde 1. también cuando el valor de los datos era 0, el gráfico no se mostraba.

He hecho una solución para eso.
consulte este JSFiddle https://jsfiddle.net/86chryat/

d3.js admite directamente la escala logarítmica en un eje, por lo que sería muy bueno si eso pudiera aparecer en c3. Es una solución mucho mejor que volver a calcular los datos, porque también maneja los ticks.

Estoy de acuerdo en que la escala logarítmica sería útil

@ masayuki0812 : al cerrar esto, ¿significa que no considerará el soporte para él? Es realmente una característica crítica para ciertas aplicaciones. Sería genial tener una integración adecuada si tiene el tiempo o las ganas, por favor.

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

DieterSpringer picture DieterSpringer  ·  4Comentarios

seubert picture seubert  ·  3Comentarios

ivarkallejarv picture ivarkallejarv  ·  3Comentarios

jstone-ponderosa picture jstone-ponderosa  ·  3Comentarios

mwho picture mwho  ·  3Comentarios