当前位置: 首页 > 知识库问答 >
问题:

从图表中删除线条后,我不能追加新线条(d3折线图)

和谦
2023-03-14

目前,我有一张传单地图和一张D3图表,我可以在其中选择一个点,并获得折线图的相关数据。我可以在折线图中添加任意数量的线。要删除,我创建了一个html按钮,单击该按钮可以删除所有路径行。我遇到的问题是,一旦点击这个按钮,行就消失了,我就不能再添加更多了。有人知道如何解决这个问题吗?下面是代码:

<div class= "timeline">
    <svg width="100%">
        <g id="lines"></g>
        <g id= "legend"></g>
    </svg>


function setUp(){
  var div = d3.select(".timeline");
  var svg = div.select("svg") //sets size of svgContainer

  x.range([0, width]);
  y.range([height, 0]);

  svg.attr("width", timelineBounds.width)
  .attr("height", timelineBounds.height);

  svg.append("rect") //sets svg rect in container
  //.style("stroke", "black")
  .style("fill", "none")
  .attr("width", 900)
  .attr("height", 150);

 var xAxis = d3.axisBottom(x).ticks(9);
 var yAxis = d3.axisLeft(y).ticks(7);

 svg.append("g") // Add the X Axis
 .attr("class", "x axis")
 .attr("transform", "translate(" + margin.left + "," + (margin.top +   height) + ")")
 .call(xAxis);

svg.append("text")      // text label for the x axis
    .attr("transform", "translate(" + (width / 2) + " ," + (height + margin.bottom + 15) + ")")
    .style("text-anchor", "middle")
    .text("Time");

svg.append("g") // Add the Y Axis
.attr("class", "y axis")
.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')
.call(yAxis);

svg.append("text")
  .attr("transform", "rotate(-90)")
  .attr("y", 0 - margin.left)
  .attr("x",0 - (height / 2))
  .attr("dy", "1em")
  .style("text-anchor", "middle")
  .text("PM 2.5 %");
}

这就是我实际划清界限的地方:

function drawChart (){
  var svg = d3.select("div svg"); 

 // Scale the range of the data
 var valueline = d3.line()
 .x(function (d) {
 return x(d.time);
})
.y(function (d) {
  return y(d.pm25);
})

 // adds the svg attributes to container
   let lines = svg.select('#lines').selectAll('path').data(lineArray,      function (d) {
  return d.id;
}); //any path in svg is selected then assigns the data from the array
lines.exit().remove(); //remove any paths that have been removed from   the array that no longer associated data
let linesEnter = lines.enter().append("path"); // looks at data not associated with path and then pairs it
lines = linesEnter.merge(lines); //combines new path/data pairs with previous, unremoved data

lines.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')
.attr("d", d => { return valueline(d.sensorData); })
.attr("class", "line-style")
.attr("stroke", d => lineColor(d.id));

下面是单击按钮时调用的函数:

function clearData(){
  d3.selectAll("#lines").remove();
}

非常感谢!

共有1个答案

芮宇航
2023-03-14

以下是我最后做的事情:

function clearData(){
  lineArray = []; 
  d3.selectAll("#lines").html('');  
}
 类似资料:
  • 我是D3的新手。js目前正在为我的一个项目开发一个

  • 我想创建一个包含三条线(男性、女性、未知)的折线图。这是我的数据示例: 是否有一个选项,在图中自动创建三行或我需要循环通过数据和创建三个跟踪自己?到目前为止,这是我的代码:

  • 本文向大家介绍jQuery插件echarts设置折线图中折线线条颜色和折线点颜色的方法,包括了jQuery插件echarts设置折线图中折线线条颜色和折线点颜色的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jQuery插件echarts设置折线图中折线线条颜色和折线点颜色的方法。分享给大家供大家参考,具体如下: 1、问题背景 设计一条折线图,但是图形中不用插件自带的颜色,需要自定义

  • 我的线条怎样才能整齐又不太侧身?

  • 我有JavaFX线图和XYChart的一些数据。系列对象作为 我试图用JavaFXCSS(最好是内联的)来设计线条图的样式,但运气不太好。我尝试过很多事情,但是没有思考 应该工作,但没有。 在JavaFXCSS参考折线图部分,它给出了这些信息, ”图表-系列-线系列 一个系列的索引和一个颜色的索引是什么?我已经搜索了StackOverflow,这个问题似乎没有得到回答,至少没有任何工作解决方案。