从D3 v3升级到v5时,在d3-legend中使用d3.format时出错

时间:2019-04-17 13:27:48

标签: javascript d3.js

我正在将可视化版本从D3 v3升级到v5。

我一直在使用d3-legend来绘制图例,因此我也将我正在使用的d3-legend版本从v1.13.0(与D3 v3兼容的最新版本)更改为v2 .25.6。

我以前使用过d3.format和d3-legend的labelFormat来格式化图例文本标签-根据加载的数据集采用不同的格式。在D3 v3中为我工作的代码在v5中不适用于我,我不知道为什么。

我的代码(D3 v5版本):

var value = 'ks4prog'

var quantize=d3.scaleQuantize()

quantize.domain([-0.8,0.8])
    .range(["rgb(230,0,126)", "rgb(207,21,138)","rgb(184,43,151)"])

d3.legendColor()
    .shapeWidth(30)
    .orient('vertical')
    .scale(quantize)
    .labelFormat(function(d) {
        if (value=="ks2att" || value=="ks4basics") {
            return d3.format(".0f")(d) + "%";
        }
        else {
            return d3.format(".1f")(d);
        }
    });

我收到以下错误:

Uncaught Error: invalid format: function(d) {
        if (value=="ks2att" || value=="ks4basics") {
            return d3.format(".0f")(d) + "%";
        }
        else {
            return d3.format(".1f")(d);
        }
    }
    at new FormatSpecifier (d3-format.js:111)
    at formatSpecifier (d3-format.js:107)
    at Function.legend.labelFormat (color.js:233)
    at collapsibletree_edited.js:12

This answer导致我认为我可能需要更改用于设置.labelFormat的函数的格式-但在像我这样的情况下,我不知道该怎么做有条件地设置.labelFormat

0 个答案:

没有答案