-2
什麼是多線圖上更新行的正確方法是什麼?簡單地綁定新數據並對'd'屬性進行轉換會產生一些奇怪的轉換。更新多線圖
這裏有一個的jsfiddle複製該
function draw(data) {
data.columns = ["date", "New York", "San Francisco", "Austin"];
var cities = data.columns.slice(1).map(function(id) {
return {
id: id,
values: data.map(function(d) {
return {
date: d.date,
value: d[id]
};
})
};
});
x.domain(d3.extent(data, function(d) {
return d.date;
}));
y.domain([
d3.min(cities, function(c) {
return d3.min(c.values, function(d) {
return d.value;
});
}),
d3.max(cities, function(c) {
return d3.max(c.values, function(d) {
return d.value;
});
})
]);
z.domain(cities.map(function(c) {
return c.id;
}));
xAxisG
.transition()
.duration(duration)
.call(d3.axisBottom(x));
yAxisG
.transition()
.duration(duration)
.call(d3.axisLeft(y))
var city = g.selectAll(".city")
.data(cities)
function drawLine(d) {
d3.select(this).transition()
.duration(duration)
.attr("d", function(d) {
d3.select(this);
return line(d.values);
});
}
city.enter().append("g")
.attr("class", "city")
.append("path")
.attr("class", "line")
.style("stroke", function(d) {
return z(d.id);
})
.each(drawLine);
city.select('.line')
.each(drawLine);
};
var dataExample = [{"date": "2011-11-22", "New York": 50, "San Francisco": 0, "Austin": 57 }, ...];
https://jsfiddle.net/m3kvh29d/
請通讀http://stackoverflow.com/help/how-對詢問和注重「幫助他人重現該問題。」只需兩個圖像是我們不可能知道是什麼問題。所以,請提供您的代碼,以便我們可以重現,最好也是一個的jsfiddle或相似。 – Cleared
剛用的jsfiddle複製問題 –
的更新問題是,你想要進行動畫但卻不帶有點數相同的路徑,這應有助於:https://bocoup.com/weblog/improving-d3-path-animation – Ashitaka