javascript – d3.js向多行系列图添加图例

如何向多行系列图表添加图例?我试过,但没有任何传说显示.

这里的区块:

http://bl.ocks.org/3884955

当各种系列收敛到同一点时,有一个缺陷,如零.所有的标签将被叠加在一起.一个传统的传说,而不是去使用这些标签.

我试过添加这个

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

legend.selectAll('rect')
  .datum(function(d) { return {name: d.name,value: d.values[d.values.length - 1]}; })
  .append("rect")
  .attr("x",width)
  .attr("y",function(d,i){ return i *  20;})
  .attr("width",10)
  .attr("height",10)
  .style("fill",function(d) { 
    return color.domain(d3.keys(d[0]).filter(function(key) { return key !== "day"; }));
  });

legend.selectAll('text')
  .datum(function(d) { return {name: d.name,value: d.values[d.values.length - 1]}; })
  .append("text")
  .attr("x",i){ return i *  20 + 9;})
  .text(function(d) {
  return d.name;
  });

到代码结尾,键名(d.name)与我的数据格式相符,但不显示.有一点,它显示了图表右侧的所有黑框,这意味着我很近,但我错过了一些重要的事情

任何洞察力赞赏

解决方法

Here是一个固定&您的代码重构版本.
var legend = svg.selectAll('g')
        .data(cities)
        .enter()
      .append('g')
        .attr('class','legend');

    legend.append('rect')
        .attr('x',width - 20)
        .attr('y',i){ return i *  20;})
        .attr('width',10)
        .attr('height',10)
        .style('fill',function(d) { 
          return color(d.name);
        });

    legend.append('text')
        .attr('x',width - 8)
        .attr('y',i){ return (i *  20) + 9;})
        .text(function(d){ return d.name; });

您需要使用enter(),但是输入()和exit()方法不能与datum()一起使用.从d3 wiki

selection.datum([value])

Gets or sets the bound data for each selected element. Unlike the selection.data method,this method does not compute a join (and thus does not compute enter and exit selections).

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


kindeditor4.x代码高亮功能默认使用的是prettify插件,prettify是Google提供的一款源代码语法高亮着色器,它提供一种简单的形式来着色HTML页面上的程序代码,实现方式如下: 首先在编辑器里面插入javascript代码: 确定后会在编辑器插入这样的代码: <pre
这一篇我将介绍如何让kindeditor4.x整合SyntaxHighlighter代码高亮,因为SyntaxHighlighter的应用非常广泛,所以将kindeditor默认的prettify替换为SyntaxHighlighter代码高亮插件 上一篇“让kindeditor显示高亮代码”中已经
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面
如何用js控制图片放大缩小
JS怎么获取当前时间戳
JS如何判断对象是否为数组
JS怎么获取图片当前宽高
JS对象如何转为json格式字符串
JS怎么获取图片原始宽高
怎么在click事件中调用多个js函数
js如何往数组中添加新元素
js如何拆分字符串
JS怎么对数组内元素进行求和
JS如何判断屏幕大小
js怎么解析json数据
js如何实时获取浏览器窗口大小
原生JS实现别踩白块小游戏(五)
原生JS实现别踩白块小游戏(一)