javascript - 如何在 d3.js 中更新图表图例?

标签 javascript graph d3.js legend

每当数据发生变化时,我都会尝试在 d3.js 中更新我的图例。我的jsfiddle应该在键集更改时更新图例。每当使用更新日期按钮将不同的数据放入收费中时, key 集就会发生变化。

我是这样想的:

var legendBox = legend.selectAll("rect")
  .data(keys);

legendBox.enter()
  .append("rect");

legendBox.exit()
  .remove();

legendBox.attr("x", width - 150)
  .attr("y", function (d, i) { return i * 20;})
  .attr("width", 10)
  .attr("height", 10)
  .style("fill", function (d, i) { return color(i);});

只要键数组发生变化,就会更新我的图例并删除旧标签。但它不会删除旧标签,它只是在旧标签上添加标签。如何更新图例以反射(reflect)日期?

最佳答案

问题是您每次都为图例创建一个 g.legend:

var legend = svg.append("g")
    .attr("class", "legend")
    .attr("height", 100)
    .attr("width", 100)
    .attr("transform", "translate(-20, 50)");

相反,您应该在 initPlot 中创建一次,然后将其作为 var legend = svg.select('g.legend') 重用于后续图例 recttext

Demo .

关于javascript - 如何在 d3.js 中更新图表图例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19772124/

相关文章:

javascript - 如何向 d3.js 折线图添加额外范围

d3.js - d3 sankey 的 typescript 类型定义

javascript - window.close() 不执行

javascript - 作为 Prototype 用户,我应该注意哪些 jQuery 烦恼?

javascript - 如何使用vuejs显示/隐藏动态添加的span item onclick?

javascript - 在 Typescript raw 函数中访问 'this'

c - 如何为 ncurses 直方图程序缩放图形最小值

python - Matplotlib 默认小刻度

c++ - 查找 MST 的关键边缘 : possible with modified Prim's algorithm?

javascript - 如何在D3.js中使用translateX和translateY?