我一直在探索如何在绘图中添加图例并在绘制新类型的转换后更新图例。我遇到了两个我无法解决的问题。
该块在这里 http://bl.ocks.org/natemiller/df4b96809580fe7d00a6
示例 JSON 数据集包括几个不同的变量(温度、pH、名称、y 等),我试图开发的是一个图,它改变了在 x 轴上绘制的变量以及确定数据填充的变量单击按钮时的点。到目前为止,我的 x 轴发生了变化,点移动得当,图例颜色也发生了变化。但是,我有两个问题。
我缺少图例文本(标签)。我不清楚为什么没有显示它们,但我认为这是我遗漏的一个小细节。我将不胜感激任何帮助。
正如您在数据集中看到的那样,有几个“样本”来自同一站点,或者具有相同的 pH 值(7.2、8.0、7.2、7.2、8.0、8.0、7.6),或者具有相同的温度(30、25、25 , 30, 30, 25, 25)。因此,当我在此处的代码中生成图例时...
varlegend = svg.selectAll('rect') .data(data) .enter().append("rect") .attr('x', width-50) .attr('y', function(d,i) {return i*20;}) .attr('width', 10) .attr('height', 10) .style('fill', function(d) { return color(d.name); });
...并使用 d.name 设置颜色我得到 7 个矩形(每个值一个),当填充颜色由站点或 pH 设置时,我宁愿有 3 个矩形(如果填充由 temp 设置,则有两个)给定一些值是重复的。有没有办法做到这一点?我考虑过 d3.nest,但是当我开始转换时,我不再希望数据按名称嵌套,而是按 pH 值嵌套(因此填充由 d.pH 设置)。我很感激对此的任何评论。我这样做是不是太复杂了?有没有更简单的方法我应该考虑实现同样的目标?
谢谢你的时间和帮助,内特