以下のコードを使用して単純な行を作成しようとしています。データはjsonの形式です。ブラウザコンソールにエラーはありません。また、私はJavaScriptの中にブレークポイントを設定すると、データが変数dsにロードされていることがわかります。私はそれがjson(複数の値を持つキー)の形式と関係があると思いますし、私はそれを関数linefunに渡しています。D3単純な行をレンダリングできません
これはすべてが完了した後のブラウザの出力です(要素の検査)。 SVGとパスはデータなしで作成されます。
<svg width="400" height="100">
<path stroke="blue" stroke-width="2" fill="none">
</path>
</svg>
データ
{
"-K_4W89HOwyew6pU78Rq" :
{
"price" : 879.0,
"screen" : 15.6
},
"-K_4YZzsghq-segc47X0" :
{
"price" : 799.99,
"screen" : 15.6
}
}
これは私のJavascriptのコードです。
<script>
var h = 100;
var w = 400;
var ds;
var url = "/Home/getdata/";
d3.json(url, function (error,data) {
if(error)
{
console.log(error);
}
else {
ds = data;
console.log("Success!");
var lineFun = d3.svg.line()
.x(function (d) {
return d.price/100
})
.y(function (d) {
return h - d.screen;
})
.interpolate("linear");
var svg = d3.select("body").append("svg")
.attr({
width: w,
height: h
});
var viz = svg.append("path")
.attr({
d: lineFun(ds),
"stroke": "blue",
"stroke-width": 2,
"fill": "none"
});
}
});
</script>
lineFunとは何ですか? –
lineFun(Line関数)は、データを入力として受け取り、出力するデータに基づいてsvg.append( "path")のx座標とy座標を出力する関数です。したがって、各データオブジェクトに対して、特定のxとyをパスにプロットする必要があります。 – user1609429