javascript - 如何使用函数绘制两个不同的数据集?

标签 javascript d3.js

我目前正在尝试在同一个 svg 上绘制两个不同的图表。它是飞机失事(在 y 轴上)与飞行公里数的关系。我试图将非致命崩溃和致命崩溃都放在图表上。 到目前为止,我刚刚声明了两类圆并绘制了它们,但我觉得我可以使用函数更有效地完成它。 到目前为止我有这个

    function myFunc(variable){
    count++;
    canevas.selectAll(`.c${count}`)
      .data(data)
      .enter
      .append("circle")
        .attr("class",`c${count}`)
        .attr("cx",d=>echelleKm(d.kmSemaine))
        .attr("cy",d=>echelleAccidents(d.variable))
        .attr("r",4)
        .attr("opacity",.5)
        .attr("fill",colors[count-1]);
  }
  myFunc(accidents85);
  myFunc(accidents00);

我在控制台中收到一条错误消息,显示“(index):109 Uncaught ReferenceError:accident85 is not Defined”,但我并没有真正明白。如果我在声明函数之前执行 console.log(d3.max(data,d=>d.accidents85) ,我可以在控制台日志中看到一些内容。

我觉得我错过了一些明显的东西,但我对 d3.js 和一般编码相当陌生,所以任何帮助将不胜感激。

谢谢!

编辑:我放了一张图片,显示如果我的函数按照我想要的方式工作,结果应该是什么 here

最佳答案

任何地方都没有定义名为 accidents85accidents00 的变量。由于您只是传递数据数组中对象的属性名称,因此必须使用引号:

myFunc("accidents85");
myFunc("accidents00");

然后,在 myFunc 中,使用方括号表示法:

.attr("cy",d=>echelleAccidents(d[variable]))

关于javascript - 如何使用函数绘制两个不同的数据集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43638013/

相关文章:

javascript - 无法访问从父级作为 props 传递的数组 - React

javascript - jQuery UI 对话框中的表单已缓存。

c# - 为什么 WCF 服务每次请求都会返回错误的值?

javascript - 在我的 d3 图表中,当我更改画笔并单击未选择的范围时,缩放选择消失

javascript - 多个路径上的笔画破折号数组补间

reactjs - Chart 中的 SVG 在 Prop 更改后不会重新渲染。 react + d3

javascript - 延迟父组件渲染,直到所有子组件渲染 reactjs

javascript - 使用 ng-click 自动传递 $event?

javascript - Ember 是否支持依赖于其他库的库?

javascript - d3 如何使圆周上的物体与中心的距离相等