我正在将可视化版本从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
。