【发布时间】:2014-01-31 21:05:39
【问题描述】:
我有一个使用 d3.js 显示折线图的按钮。但是我想在单击同一按钮时从图中删除该线。我创建了一个切换按钮,但是如何从图表中删除线?我有以下绘制图表的函数。 svg.selectAll("path").remove() 正在删除轴而不是线。
函数 plotGraph(文件) {
var color = d3.scale.category10();
var svg = d3.select('#mySvg');
svg.selectAll("path").remove();
var line = d3.svg.line().interpolate("basis").x(function(d) {
return x(d.date);
}).y(function(d) {
return y(d.mvalue);
});
d3.csv(file,function(error, data) {
color.domain(d3.keys(data[0]).filter(function(key) {
return key !== "date";
}));
data = data.map(function(d) {
return {
mvalue : +d.mvalue,
date : parseDate(d.date)
};
});
x.domain(d3.extent(data, function(d) {
return d.date;
}));
y.domain([ 0, 100 ]);
svg.append("path").datum(data).attr("class", "line").attr("d",line);
});
}
【问题讨论】:
-
你试过
d3.select("path.line").remove()吗? -
是的,这行得通。但我的图表上有多条线。我可以只删除一个选定的。有没有办法给每一行一个id?
-
是的,
.attr("id", "something")。这也可以通过函数来设置。 -
d3.select("path.line) 正在删除图形上的所有线。我只需要删除特定的。.attr() 函数不能添加到线,但它被添加到svg 元素。例如:svg.append("path").datum(data).attr("class", "line").attr("d",line).attr("id","lineId" ); 那么如果我想删除这条 id 为 lineId 的行,我该怎么做呢?
-
看起来您只添加了一个路径,
d3.select("path.line").remove()只会删除一个路径。是否要删除路径的一部分?
标签: javascript html d3.js