D3.js D3中的自定义线性比例

D3.js D3中的自定义线性比例,d3.js,D3.js,我有一个线性刻度,我用它作为图表中的一个轴 我想定义一个只显示正数的自定义格式,下面的示例中我用这种方式创建了一个自定义格式: function yFormat(formats) { return function(value) { var i = formats.length - 1, f = formats[i]; while (!f[1](value)) f = formats[--i]; re

我有一个线性刻度,我用它作为图表中的一个轴

我想定义一个只显示正数的自定义格式,下面的示例中我用这种方式创建了一个自定义格式:

    function yFormat(formats) {
        return function(value) {
            var i = formats.length - 1, f = formats[i];
            while (!f[1](value)) f = formats[--i];
            return f[0](value);
        };
    }

    var customFormat = yFormat([
        [d3.format("?????"), function() { return true }],
        [d3.format("d"), function(d) { return d >= 0 }]
    ]);
但是我不知道如何为数字()

有人有主意吗?谢谢

编辑

d3.格式(“”
似乎适用于时间刻度,但不适用于线性刻度。在控制台中:

> var emptyTime = d3.time.format("");
  undefined
> emptyTime("something");
  ""
> var emptyInt = d3.format("");
  undefined
> emptyInt(5);
  "5"
回答

我只是在轴本身上使用TickValue。比如说:

yAxis.tickValues(
            d3.range(
                0,
                d3.max(y.domain()),
                shift
            )
        );

“空”格式是什么意思<代码>d3.格式(“”?我试过了,但出于某种原因,它显示负数。如果刻度是时间刻度,它会起作用,但它似乎不适用于线性刻度。在这种情况下,您必须使用
tickValues
设置要显式显示的刻度。格式化程序实际上只是这样。好的,所以刻度将包含负值,但只显示正值的刻度。很好,谢谢!