Javascript d3:用x轴上的文本替换数字值

Javascript d3:用x轴上的文本替换数字值,javascript,d3.js,Javascript,D3.js,我试图在D3V3中制作一个多行图表,重用主要来自js的代码,因为我是js中的乞丐,它似乎最适合我的需要 但是,我现在在x轴上有ID,我希望有文本值(下面显示的数据中的名称) 这是关于x轴的代码: chartObj.formatAsNumber = d3.format(".0f"); // since now ID are represented as numbers chartObj.xFormatter = chartObj.formatAsNumber; //TODO as text va

我试图在D3V3中制作一个多行图表,重用主要来自js的代码,因为我是js中的乞丐,它似乎最适合我的需要

但是,我现在在x轴上有ID,我希望有文本值(下面显示的数据中的名称)

这是关于x轴的代码:

chartObj.formatAsNumber = d3.format(".0f"); // since now ID are represented as numbers

chartObj.xFormatter = chartObj.formatAsNumber; //TODO as text value

chartObj.bisect = d3.bisector(chartObj.xFunct).left; // used for tooltip

chartObj.xScale = d3.scale.linear().range([0, chartObj.width]).domain(d3.extent(chartObj.data, chartObj.xFunct));
   // chartObj.xScale = d3.scale.ordinal().range([0, chartObj.width]).domain(dataset.map(function(d) { return d."NAME"; })); // (?)

chartObj.xAxis = d3.svg.axis().scale(chartObj.xScale).orient("bottom").tickFormat(chartObj.xFormatter);

chartObj.svg.append("g").attr("class", "x axis").attr("transform", "translate(0," + chartObj.height + ")").call(chartObj.xAxis).append("text").attr("class", "label").attr("x", chartObj.width / 2).attr("y", 30).style("text-anchor", "middle").text(chartObj.xAxisLabel);
以及mousemove的功能:

function mousemove() {
            var x0 = chartObj.xScale.invert(d3.mouse(this)[0]), i = chartObj.bisect(dataset, x0, 1), d0 = chartObj.data[i - 1], d1 = chartObj.data[i];

            try {
                var d = x0 - chartObj.xFunct(d0) > chartObj.xFunct(d1) - x0 ? d1 : d0;
            } catch (e) { return;}
            minY = chartObj.height;
            for (var y  in yObjs) {
                yObjs[y].tooltip.attr("transform", "translate(" + chartObj.xScale(chartObj.xFunct(d)) + "," + chartObj.yScale(yObjs[y].yFunct(d)) + ")");
                yObjs[y].tooltip.select("text").text(chartObj.yFormatter(yObjs[y].yFunct(d)));
                minY = Math.min(minY, chartObj.yScale(yObjs[y].yFunct(d)));
            }
            focus.select(".focus.line").attr("transform", "translate(" + chartObj.xScale(chartObj.xFunct(d)) + ")").attr("y1", minY);
        }
我使用的数据如下所示:

[{"ID":"2","NAME":"version:BA01","min":"44.8","max":"44.8"},{"ID":"6","NAME":"version:BA10","min":"44.7","max":"44.9"},{"ID":"7","NAME":"version:BA21","min":"45.0","max":"45.1"},{"ID":"28","NAME":"version:BA25","min":"44.9","max":"44.9"}]

如果您能解释如何在不丢失工具提示的情况下,将x轴上的ID(数字)替换为名称(文本)值,我将不胜感激;到chartObj.xFormatter=chartObj。名称
如果您可以生成一个JSFIDLE并在解决方案不起作用时共享该链接,那么这将更容易。

更改chartObj.xFormatter=chartObj.formatAsNumber;到chartObj.xFormatter=chartObj。名称
如果您可以生成一个JSFIDLE,并在解决方案不起作用时共享链接,这将更容易。

谢谢您,但事实并非如此。我试着让小提琴演奏起来,但一定是出了差错。请用jsfiddle呈现图形您所说的呈现图形是什么意思?由于使用了函数(最后一行),因此图形没有在JSFIDLE中呈现,如果我参考任何示例并向您展示如何更改XAxis上的标签,您是否可以接受?我将非常感谢您提供的任何帮助谢谢,但事实并非如此。我试着让小提琴演奏起来,但一定是出了差错。请用jsfiddle呈现图形您所说的呈现图形是什么意思?由于使用了函数(最后一行),因此图形没有在JSFIDLE中呈现,如果我参考任何示例并向您展示如何更改XAxis上的标签,您是否可以接受?我将非常感谢您提供的任何帮助