C3: Ganzzahl nur der x-, y-Achse

Erstellt am 15. Okt. 2014  ·  9Kommentare  ·  Quelle: c3js/c3

Wie kann man die Achse so ankreuzen lassen, dass sie nur eine ganze Zahl ist?
qq 20141015141217

Ich habe versucht, die Tick-Option zu verwenden:

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

Dadurch kann die Beschriftung nur eine Ganzzahl anzeigen, die Trennlinie auf der Achse bleibt jedoch bestehen.
qq 20141015141829

Gibt es eine Möglichkeit, den Achsen-Tick zu steuern?

question resolved maybe

Hilfreichster Kommentar

Bessere Version:

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

Alle 9 Kommentare

In der aktuellen Entwicklungsversion (Master) können Sie axis.y.values ​​verwenden , um eine Liste von Ticks

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

Aber das kann nicht dynamisch sein, basierend auf der Datenquelle. Stimmt das?

Sie können diese Werte nach dem Laden der Daten berechnen, auf chart.internal.config.axis_y_tick_values und dann chart.flush() aufrufen, um neue Achsenwerte anzuwenden.

Wie wäre es mit diesem Code?

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

Es scheint bereits gelöst zu sein, also lassen Sie mich bitte schließen.

FWIW, es erfordert wirklich seltsam, die Interna von D3 zu kennen und JS auszuführen. Ich sehe dieses Muster häufig in diesen C3-Problemen: Jemand hat ein Problem, und anstatt eine C3-Option anzubieten, sind 5 bis 30 Zeilen Javascript die akzeptierte Lösung, wenn die zugrunde liegende SVG mit d3 manipuliert wird. Ich denke, auf lange Sicht wird dies einen großen Nachteil für die Einführung von C3 bedeuten.

Insbesondere für dieses Problem wäre eine Option "axis.y.tick.integer_only" von unglaublichem Wert. Ich würde gerne eine Erweiterung für C3 dafür bereitstellen. Ich sehe ein Beispiel Erweiterung hier . Gibt es irgendwo einen Erweiterungsleitfaden, der mich führen kann?

Vielen Dank!

Bearbeiten: Grammatik.

Sie können diese Werte nach dem Laden der Daten berechnen, auf chart.internal.config.axis_y_tick_values ​​setzen und dann chart.flush () aufrufen, um neue Achsenwerte anzuwenden.

In Bezug darauf, weil ich heute auch dieses Problem hatte - wenn Sie flush() tun, wird die Animation der Datenänderung durcheinander gebracht, und das Hinzufügen einer Verzögerung hat auch einige grafische Probleme. Das Setzen von chart.internal.config.axis_y_tick_values auf den richtigen Wert vor dem Aufrufen von load() funktioniert jedoch einwandfrei. Vielleicht ist das für jemanden hilfreich :).

Bessere Version:

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

Danke nnabinh - hat ein Vergnügen gemacht.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen