首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何绘制从-Inf到Inf的线a?

如何绘制从-Inf到Inf的线a?
EN

Stack Overflow用户
提问于 2017-04-24 13:02:54
回答 1查看 77关注 0票数 0

我有一个具有缩放功能的D3 JS散点图,为此我预先计算了一个线性回归(OLS),并且我可以绘制如下趋势线:

代码语言:javascript
复制
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);

这做了我想做的,除了行从xMinxMax,我希望它从-Inf到Inf,当用户放大时,这很明显,我怎么做呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-24 14:02:49

解决方案是(如Q注释中所讨论的),每次缩放后,找出x轴末端的当前域位置(获得调用x.domain()),然后更新行。完整的解决方案如下:

代码语言:javascript
复制
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);

这给人一种从-Inf到Inf的视觉印象。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43588840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档