Javascript 如何使用d3.js colorScale根据字符串值而不是数字值更改颜色?

Javascript 如何使用d3.js colorScale根据字符串值而不是数字值更改颜色?,javascript,d3.js,data-visualization,export-to-csv,Javascript,D3.js,Data Visualization,Export To Csv,长话短说:我得到了一个d3.js示例,以帮助可视化一个.csv报告,该报告记录了我环境中每个服务器的文件数。报告的目标是确保没有任何特定服务器中有过多的文件。因此,如果服务器上的文件少于50个,则单元格将被涂成绿色。如果50-100,则为黄色,100以上为红色 下面是我正在使用的特定colorScale代码示例: var colorScale = d3.scale.threshold() .domain([50,100,20000]) .range(["MediumSpringG

长话短说:我得到了一个d3.js示例,以帮助可视化一个
.csv
报告,该报告记录了我环境中每个服务器的文件数。报告的目标是确保没有任何特定服务器中有过多的文件。因此,如果服务器上的文件少于50个,则单元格将被涂成绿色。如果50-100,则为黄色,100以上为红色

下面是我正在使用的特定colorScale代码示例:

var colorScale = d3.scale.threshold()
    .domain([50,100,20000])
    .range(["MediumSpringGreen","Yellow","OrangeRed"]);
因为这个colorScale设计成一个数字域,我很好奇如何配置它来接受字符串值

例如,我正在将更多信息添加到我的
.csv
报告中,而不仅仅是服务器中的文件号,我希望显示正常运行时间并报告一些情况,如果有一个单元格显示“在线”,它将被涂成绿色,如果有一个单元格显示“离线”,它将被涂成红色

--编辑:--

您好,因此我进行了调整,使用了
ordinal
而不是
threshold

var colorScale = d3.scale.ordinal()
    .domain([" ","STATE : 4 RUNNING","STATE : 1 STOPPED"])
    .range(["White","MediumSpringGreen","OrangeRed"]);
但是,结果是其他单元格也被填充:

例如,在图中,我的IP地址被涂成绿色,“主机名”被涂成红色


现在,我只希望
状态4:RUNNING
为绿色,
状态1:STOPPED
为红色。

您可以使用顺序比例,将字符串映射到值

var colorScale = d3.scale.ordinal()
    .domain(['OFFLINE','ONLINE'])
    .range(['red','green']);

嗨,Eric,我接受了你的反馈,并调整了我的代码以使用序数而不是阈值,但是一些我没有指定的单元格正在着色。我对我的主要帖子进行了编辑,并添加了一张我的结果图片,你能看一下吗?非常感谢。嗨,埃里克,能给我一些反馈吗?我已经对我的原始帖子进行了编辑,更新了这个问题。非常感谢你!序数刻度是宽容的,因为如果你传入一个“未知”的输入值,它仍然会尝试输出一个值。相对于我的回答,“未知”值将是“脱机”和“联机”以外的值。我建议为未知值设置默认颜色,例如白色。查看文档