是否可以在D3中绘制基于方程式的直线?

时间:2018-09-05 14:39:15

标签: d3.js

我是D3.js的新手,请谅解。

我有一个对数-对数图中的直线方程,Log(Y)= Log(C)+ Log(X),C为常数且由用户定义。

有没有办法仅从方程式中得出D3中的直线?

谢谢。

1 个答案:

答案 0 :(得分:1)

不,这不可能完全像您在D3中一样。与其他工具(R,MatLab)相比,D3较少涉及数学计算和可视化,而更多地涉及将数据集绑定到DOM以及处理数据集之间的动画。

也就是说,如果您计算方程的X和Y值,则可以轻松地绘制这些值。我已经看到D3像这样使用了,它带有C的输入框,然后绘制一个范围。

以下是您的评论:

const C = 1;
const xScale = d3.scaleLinear()
    .domain([0, 100])
    .range([0, 1000]); // pixels

const yScale = d3.scaleLinear()
    .domain([0, 100])
    .range([0, 1000]);

const line = d3.line()
               .x(d => xScale(d))
               .y(d => yScale(Math.log(C) + Math.log(d)));

const values = [0, 50, 100];

d3.selectAll("path")
  .datum(values)
  .attr("fill", "none")
  .attr("stroke", "steelblue")
  .attr("d", line);

请注意,方程式中的泵送关键是定义在行生成器中给定y的情况下如何生成x值,该行涵盖了这一点:

.y(d => yScale(Math.log(C) + Math.log(d)))