2017-04-24 1 views
0

나는 선형 회귀 분석 (OLS)을 미리 계산하는 기능을 확대와 D3 JS 분산 플롯을 가지고 있으며이 같은 추세 라인을 그릴 수 있습니다 :이 나는 줄 것을 제외하고 원하는 것을-Inf에서 Inf로가는 선 a를 그리는 방법?

var objects = svg.append("svg") 
    .classed("objects", true) 
    .attr("width", width) 
    .attr("height", height); 

var x = d3.scale.linear() 
    .range([0, width]).nice(); 
var y = d3.scale.linear() 
    .range([height, 0]).nice(); 

objects.append("svg:line") 
    .classed("trendline", true) 
    .attr("x1", x(xMin)) 
    .attr("y1", y(lineIntercept + xMin*lineSlope)) 
    .attr("x2", x(xMax)) 
    .attr("y2", y(lineIntercept + xMax*lineSlope)) 
    .attr("stroke", colorVal) 
    .attr("stroke-width", 2); 

xMin에서 xMax으로 바뀌 었습니다. Inf에서 Inf로 이동하기를 원합니다. 사용자가 줌아웃 할 때 이것이 분명 해지면 어떻게 할 수 있습니까?

+0

은 결코 어느 한쪽에 종료하지 INF에 -Inf에서 진행하는 시각적 인 인상을 준다. 그래, 그게 무슨 뜻인지 알 겠어. –

+0

더 합리적인 방법은 확대/축소하면서 xMin/xMax를 조정하는 것입니다. – chazsolo

+0

오 좋은 생각 .. 그것에 대해 생각하지 않았다 ... –

답변

0

모든 확대/축소가 x 축의 현재 도메인 위치를 찾은 후 (x.domain() 호출을 얻음) 솔루션을 (Q 설명에서 설명한대로) 수행 한 다음 해당 줄을 업데이트합니다. 다음과 같이 완벽한 솔루션은 다음과 같습니다

objects 
    .selectAll(".trendline") 
    .attr("x1", x(x.domain()[0])) 
    .attr("y1", y(lineIntercept + x.domain()[0]*lineSlope)) 
    .attr("x2", x(x.domain()[1])) 
    .attr("y2", y(lineIntercept + x.domain()[1]*lineSlope)) 
    .attr("stroke", colorVal) 
    .attr("stroke-width", 2); 

이 라인이

축소 또는 라인을 패닝 할 때 내 말은
관련 문제