【发布时间】:2013-02-14 01:34:41
【问题描述】:
在 D3.js 中使用 data().enter().append() 后,只需使用 d.valuename 即可检索数据集中的各个列/值。但我想在 CSV 列中找到线性比例的最大值。由于比例之前没有任何数据调用,我真的不确定如何指定从中找到最大值的正确列。
这是我失败的尝试。我用什么替换d.column1?
d3.csv("file.csv", function (data) {
var x = d3.scale.linear()
.domain([0, d3.max(d.column1)])
.range([0, 960]);
编辑:
好的,通过查看a similar example,我更进一步了。我不明白为什么我的代码现在不起作用。
d3.csv("file.csv", function (data) {
data.forEach(function(d) {
d.column1 = +d.column1;
});
var max = d3.max(data, function(d) { return d.column1; });
var x = d3.scale.linear()
.domain([0, max])
.range([0, 960]);
编辑 #2:
如果问题源于数据本身,这里有一个 sn-p。我尝试删除所有引号,并保留除顶行之外的所有引号,但没有任何效果。
"product", "price"
"bread",20
"meat",100
"meat, sausage",200
编辑#3:
好的,我保证,最后一次编辑。但要绝对清楚;我使用 x-scale 来确定条形图中条形的宽度:.attr("width", x) 并且比例返回 NaN。
【问题讨论】:
-
您已编辑示例接缝以正确确定最大值。例如,以下 jsfiddle 显示它工作正常:jsfiddle.net/activescott/HCDJu 究竟是什么不工作?
-
可能和数据源有关。请参阅我的最新编辑以获取我的 CSV 文件中的数据示例。你怎么看?
-
问题是我的条的宽度返回 NaN。如果我跳过比例并让宽度成为数据的函数,比如
.attr("width", function (d) {return +d.column1}),它就像一个魅力。但是d3.max不愿意将行视为数字。
标签: javascript d3.js