使用d3.js将圆圈添加到多线图

所以我想在这个图上为每个数据点添加圆圈:

http://bl.ocks.org/mbostock/3884955

有关如何做到这一点的任何想法?谢谢.

这是我现在尝试的:

var circles = focus.selectAll("g") 
    .data(values) 
    .enter() 
    .append("g"); 

circles.append("circle") 
    .attr("cx",function (d) { return d.date; }) 
    .attr("cy",function (d) { return d.temperature; }) 
    .attr("r",function (d) { return 4; });

解决方法

您可以为给定城市的每个点添加圆圈:

city.append("g").selectAll("circle")
  .data(function(d){return d.values})
  .enter()
  .append("circle")
  .attr("r",2)
  .attr("cx",function(dd){return x(dd.date)})
  .attr("cy",function(dd){return y(dd.temperature)})
  .attr("fill","none")
  .attr("stroke","black")

结果:http://bl.ocks.org/ChrisJamesC/5896521/943f325deacb4a533e086d56478c1e76b6c6b4bd

顺便说一句,这种方法不适用于基础插值,因为点似乎远离线.如果你需要插值,你可能需要做更多的工作,但我怀疑,因为突出曲线的每个点肯定意味着你想拥有它们的确切位置.

编辑:
为了使圆与行的颜色相同,您需要访问parentNode的数据:

.attr("stroke",function(d){return color(this.parentNode.__data__.name)})

新结果:http://bl.ocks.org/ChrisJamesC/5896521/83d7c5c04f7d031d3c71b4d6fd5b5193366d9fed

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...