2017-09-27 13 views
1

x軸とy軸に点を置くことによってcsvファイルを読み込む折れ線グラフを生成しようとしています。いくつかの奇妙な理由で、軸が正しく表示されません。私はxとyの値が負です。この画像のようなデカルト平面を持つ必要があります。この場合、完全デカルト平面を表示する必要があります。私のポイントでは、xとyに負の値があります。点xとyをプロットすると、軸yとxが正しく表示されない

enter image description here

ポイントが間違って表示されている理由を私は知りません。

enter image description here

更新ボタン、グラフの値を更新する新しい点を読み込みます。

http://plnkr.co/edit/dDx8gRZIfjvemWpgikAp?p=preview

var margin = {top: 30, right: 20, bottom: 30, left: 50}, 
    width = 600 - margin.left - margin.right, 
    height = 270 - margin.top - margin.bottom; 


// Set the ranges 
var x = d3.scale.linear().range([0, width]); 
var y = d3.scale.linear().range([height, 0]); 

// Define the axes 
var xAxis = d3.svg.axis().scale(x) 
    .orient("bottom").ticks(5); 

var yAxis = d3.svg.axis().scale(y) 
    .orient("left").ticks(5); 

// Define the line 
var valueline = d3.svg.line() 
    .x(function(d) { return x(d.datax); }) 
    .y(function(d) { return y(d.datay); }); 

// Adds the svg canvas 
var svg = d3.select("body") 
    .append("svg") 
     .attr("width", width + margin.left + margin.right) 
     .attr("height", height + margin.top + margin.bottom) 
    .append("g") 
     .attr("transform", 
       "translate(" + margin.left + "," + margin.top + ")"); 

答えて

0

あなたの最小ドメインの値が0であるため、xとyの負の値が表示されていない:

x.domain([0, d3.max(data, function(d) { return d.datax; })]); 
y.domain([0, d3.max(data, function(d) { return d.datay; })]); 

それはの最小値を設定するようにそれは(されている必要があります最小値としてのデータセット)

x.domain(d3.extent(data, function(d) { return d.datax; })); 
y.domain(d3.extent(data, function(d) { return d.datay; })); 

作業コードhere

+0

私が質問で言ったように、私は画像のようにデカルト平面を持つ必要があります、私のコードではポイントがあまりにも稀に表示されます。 https://i.imgur.com/klA6pZK.jpg – yavg

関連する問題