我正在使用D3从json数组中绘制线条。我可以从x和y坐标获取它的值,但我正在尝试获取行名称并将其分配给路径对象id但是获得所有类型的[object object}错误。 我正在使用的数组是: [{name:“line1”,x:1,y:1},{name:“line1”,x:1,y:2},{name:“line1”,x:1,y:5},]
对于不同的行,它们是相同的,并且重复名称,因为我可能需要在每个数据点。
代码是:
var width = 500,
height = 500,
margin = 50,
x = d3.scale.linear()
.domain([0, 10])
.range([margin, width - margin]),
y = d3.scale.linear()
.domain([0, 10])
.range([height - margin, margin]);
var actionsD3 = [
[ {name: "line1", x: 1, y: 1},{name: "line1", x: 2, y: 2},{name: "line1", x: 3, y: 5},]
];
var line = d3.svg.line()
.x(function(d){return x(d.page);})
.y(function(d){return y(d.characterid);});
var lineName = d3.select()
.jsonData(function(d){return (d.name);});
svg.attr("height", height)
.attr("width", width);
function render(data) {
svg.selectAll("path")
.data(data)
.enter()
.append("path")
.attr("class", "line")
.attr("id",function(d){return lineName(d);})
.attr("d", function(d){return line(d);});
}
render(actionsD3);
我想要的是与使用d.x和d.y获取x和y值的行相同。 但我似乎总是得到这对或阵列。
由于
答案 0 :(得分:1)
您发布的代码不起作用,但根据您的描述,它将类似于.attr("id", function(d) { return d[0].name; })
。这个想法是你传入一个指定该行的数组并从该行的第一个点获取ID。