C3: entero solo del eje x, y

Creado en 15 oct. 2014  ·  9Comentarios  ·  Fuente: c3js/c3

¿Cómo hacer que el eje sea un número entero?
qq 20141015141217

lo que he intentado es usar la opción tick:

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

esto puede hacer que la etiqueta solo muestre un número entero, pero la línea divisoria en el eje aún existe.
qq 20141015141829

¿Hay alguna forma de controlar el tic del eje?

question resolved maybe

Comentario más útil

Mejor versión:

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

Todos 9 comentarios

en la versión de desarrollo actual (maestra) puede usar axis.y.values para establecer la lista de ticks. por ejemplo

{
  axis: {
    y: {
      ticks: [1,2,3]
    }
  }
}

pero esto no puede ser dinámico en función de la fuente de datos, ¿verdad?

Puede calcular esos valores después de la carga de datos, establecerlo en chart.internal.config.axis_y_tick_values y luego llamar a chart.flush() para aplicar nuevos valores de eje.

¿Qué tal este código?

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

Parece que ya está resuelto, así que déjeme cerrar.

FWIW, que requiere conocer los aspectos internos de D3 y ejecutar JS parece realmente extraño. Veo mucho ese patrón en estos problemas de C3: alguien tiene un problema y, en lugar de ofrecer una opción C3, 5-30 líneas de javascript que manipulan el SVG subyacente con d3 es la solución aceptada. Creo que a largo plazo eso será un gran detrimento para la adopción de C3.

Para este problema en particular, una opción "axis.y.tick.integer_only" sería de un valor increíble. Me encantaría proporcionar una extensión de C3 para esto. Veo una extensión de ejemplo aquí . ¿Hay una guía de extensión en algún lugar que pueda guiarme?

¡Gracias!

Editar: gramática.

Puede calcular esos valores después de la carga de datos, configurarlo en chart.internal.config.axis_y_tick_values ​​y luego llamar a chart.flush () para aplicar nuevos valores de eje.

Refiriéndome a esto, porque también tuve este problema hoy: hacer flush() estropeará la animación del cambio de datos, y agregar un retraso también tiene algunos problemas gráficos. Sin embargo, configurar chart.internal.config.axis_y_tick_values al valor adecuado antes de llamar a load() funciona perfectamente. Quizás esto sea útil para alguien :).

Mejor versión:

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

Gracias nnabinh - funcionó de maravilla.

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

Temas relacionados

jstone-ponderosa picture jstone-ponderosa  ·  3Comentarios

Zerim picture Zerim  ·  3Comentarios

DieterSpringer picture DieterSpringer  ·  4Comentarios

laurentdebricon picture laurentdebricon  ·  3Comentarios

Saikat-Sinha picture Saikat-Sinha  ·  3Comentarios