複数行グラフで奇妙な問題が発生しています。グラフは、「ライブ」データをシミュレートするために新しい行が 5 秒間隔で追加される mysql データベースからのデータを示しています。データがデータベースから再取得されると、グラフは 5 秒間隔で更新されます。
「ストリーミング」が停止して開始します。更新されたデータが取り込まれるたびに、次の 3 つのエラーが発生します。
Uncaught SyntaxError: Unexpected token <
d3_json
respond
データは、次のように各パス/ラインに適用されます。
var parameter = svg.selectAll(".parameter")
.data(data, function(d) { return d.key; })
.enter().append("g")
.attr("class", "parameter");
parameter.append("path")
.attr("class", "line")
.attr("d", function(d) { return line(d.values); })
.style("stroke", function(d) { return color(d.key); });
..その後、更新されたデータが 5 秒間隔で読み込まれ、それに応じてグラフが更新および遷移されます。
d3.json("LiveData.php", function(error, data)
{
color.domain(d3.keys(data[0]).filter(function(key) { return key == "testSource_id"; }));
data = data.map( function (d) {
d.testSource_id = +d.testSource_id;
d.dateTimeTaken = parseDate(d.dateTimeTaken);
d.reading = +d.reading;
d.parameterType = d.parameterType;
d.parameter_id = +d.parameter_id;
return d;
});
data = d3.nest().key(function(d) { return d.testSource_id; }).entries(data);
x.domain([d3.min(data, function(d) { return d3.min(d.values, function (d) { return d.dateTimeTaken; }); }),
d3.max(data, function(d) { return d3.max(d.values, function (d) { return d.dateTimeTaken; }); })]);
y.domain([d3.min(data, function(d) { return d3.min(d.values, function (d) { return d.reading; }); }),
d3.max(data, function(d) { return d3.max(d.values, function (d) { return d.reading; });})]);
var newparameters = svg.selectAll("g.parameter")
.data(data);
newparameters
.select( "path.line" )
.transition()
.ease("linear")
.duration(750)
.attr( "d", function(d) { return line(d.values); })
svg.select(".x.axis")
.transition()
.duration(750)
.ease("linear")
.call(xAxis);
svg.select(".y.axis")
.transition()
.duration(750)
.ease("linear")
.call(yAxis);
これがパス/ラインを移行している方法が原因なのか、それともデータベースからデータを取得する方法に関係があるのか わかりません。誰でも助けることができますか?