我有两个下拉菜单,允许用户选择x&散点图的y轴。在散点图中还绘制了一条线性回归线,所以我希望在两轴上的值发生变化时更新它。
为此,我必须相应地更改var points
的两个数组,以更改x和/或y轴的值
var points = dataset.map(function (d) { return [parseFloat(d.x), parseFloat(d.y)]; });
(我使用这种数组,因为我使用js库来计算回归的值)
d.x
包含x轴的值,d.y
y轴'
我想做的是能够只更改数组本身的第一个或第二个数组(d.x
或d.y
)。
为此,我将变量放在事件监听器中,但这是我不知道如何解决的问题:
由于将有two event listeners
,一个用于d.x,一个用于d.y,如何在事件监听器中更改数组的d.x
或d.y
值?
现在我有x轴:
.on("change", function () { //other stuff happening, then:
var points = dataset.map(function (d) { return [parseFloat(d[SelX]), parseFloat(d.y)]; });
SelX
指的是x轴值已更改并且有效,但我希望它不会更改数组中的d.y
值,我不知道正确的语法在不影响数组的第二个值的情况下写入。
或者可能是更好的解决方案:
由于在var points
事件之前声明.on change
,是否可以引用第一个或第二个数组,因此我不必将整个事物粘贴到事件侦听器中?
答案 0 :(得分:0)
听起来最简单的事情就是在全局变量中保持对x和y的当前选定值的引用。然后代码看起来像这样。
var chosenX = "foo", chosenY = "bar";
// ...
.on("change", function() {
chosenX = SelX;
points = dataset.map(function (d) { return [parseFloat(d[chosenX]), parseFloat(d[chosenY])]; });
});