イム現在、私は起こるしたい何d3.js D3.jsマルチLinegraphパスに追加し、軸
で私linegraphパスと軸の更新で問題が発生している持つ、新しいデータが入力されると(好ましくはウェブソケットを介して行うが、簡単なボタンクリックで分単位で)、グラフの新しい点まで線が延び、必要に応じて軸が調整されて新しい販売値を容易にする。次のように私はこれを試して使用していたテストデータは次のとおりです。
クライアント:XYZ 売上高:400 時間:午前17時00
ウェブ上で、それぞれのフィールドに入力する必要があります形。
私はいくつかの方法を試しましたが、まだd3.jsにはまだ新しく、正しい方法でデータを選択したりバインドしているかどうかわかりませんどちらかを更新してください。
このコードをグラフ上のすべての行に対して同時に実行することをお勧めします。したがって、Webフォームがデータベースとペア設定されている場合、設定された間隔ですべての行を同時に更新します。
提案がありますか?大変感謝しています。現在のビルドの
jsfiddle:ボタンのクリックイベントのためhttps://jsfiddle.net/2bqzuue3/1/
コード:
d3.select("button")
.attr("id","submit")
.on("click", function(d){
var newClient = document.getElementById("client").value;
var newSale = document.getElementById("sale").value;
var newtime = document.getElementById("time").value;
var update = {
"Client" : newClient,
"sale": newSale,
"time": newtime
};
data.push(update);
dataGroup = d3.nest()
.key(function(d){
return d.Client; //Decides which property (i.e key) to sort your data with
//Useful for multiple lines on one graph
})
.entries(data);
xScale = d3.time.scale()
.domain([d3.min(data, function(d){return parseTime(d.time);}),d3.max(data, function(d){return parseTime(d.time);})])
yScale = d3.scale.linear()
.domain([d3.min(data, function(d){return d.sale;}) , d3.max(data, function(d){return d.sale;})]);
vis.select(".x.axis")
.transition()
.duration(1000)
.call(xAxis);
vis.select(".y.axis")
.transition()
.duration(1000)
.call(yAxis);
lineGen = d3.svg.line()
.x(function(d){
return xScale(parseTime(d.time));
})
.y(function(d){
return yScale(d.sale);
})
.interpolate("monotone");
vis.selectAll("path")
.data(dataGroup)
.enter()
.append("svg:path")
.attr("d", lineGen(dataGroup.values))
.transition()
.duration(1000);
});
*注:jsfiddleにテストデータを入力するテキストフィールドを表示するには、スクロールダウンする必要があります。
情報とアドバイスをありがとうございました!とても有難い! –