32

値の範囲が 0 ~ 3 の d3 棒グラフがあります。Y軸に整数値のみを表示したいのですが、これは次の方法で実行できます

var yAxis = d3.svg.axis().scale(y).orient("right").tickFormat(d3.format("d"));

ただし、整数以外のマーキングにはまだ目盛りがあります。目盛りの形式を設定すると、それらのラベルのみが非表示になります。目盛りの数または目盛りの値を明示的に設定できますが、私がやりたいのは、目盛りが整数値でのみ表示されるように指定できるようにすることです。それは可能ですか?

ここに画像の説明を入力

4

5 に答える 5

15

以下で行ったように、.ticks(4) と .tickSubdivide(0) を追加できます。

var yAxis = d3.svg.axis()
    .scale(y)
    .orient("right")
    .ticks(4)
.tickFormat(d3.format("d"))
    .tickSubdivide(0);
于 2012-11-27T05:19:02.740 に答える
5

プログラムでティック数を設定できますdata.length - 1(これにより、少数のティックで発生していた問題も解決されます)

var yAxis = d3.svg.axis()
    .scale(y)
    .orient("right")
    .tickFormat(d3.format("d"))
    .ticks(data.length - 1)
于 2013-08-05T16:26:03.657 に答える
1

このヒントを使用して、これを動的グラフで機能させました (ページ上の 1 つ以上のグラフ)

それはトリックをしました。Math.min(maxHeight+1,yAxis.ticks()) に変更したので、グラフの高さが目盛りの数よりも小さい場合は、目盛りの数を減らします。— ジェフ・ストーリー

  // It is either 10 or Maximum Chart height + 1 

        var graphValues = selection.data()[0].map(function(obj) {
            return obj['count'];
        }).compact();  

        Array.prototype.maxValArray = function() {
          return Math.max.apply(null, this);
        };

        var maxValue = graphValues.maxValArray();

        yAxis.ticks(Math.min(maxValue + 1, 10)) 
于 2015-05-22T07:36:46.000 に答える