javascript - d3 rect 没有显示

标签 javascript jquery d3.js

我想显示一些数据的图例(标题?)。 对于图例的每一部分,我将一个 rect 和一个 p 附加到父分区。 问题是 rect 没有出现。

这是我的代码:

var groups = {{ groups|safe }};
groups.forEach(function(group, i) {
    var div = d3.select("#collapse-legend");
    div.append("rect")
        .attr("width", 17)
        .attr("height", 17)
        .style("fill-opacity", 1)
        .style("fill", function (d) { return c(i); });
    div.append("p").text(group)
});

现在,当我检查我的网页内容时,我得到了 rect 和 p,但是 rect:

  1. 没有出现
  2. 似乎宽度为 0(用 firefox 显示它的区域)

我的代码有什么错误吗?有没有更好的方法来实现这一目标?我是 javascript 和 d3.js 的新手,所以请放纵一下 ^^

更新

这就是我的结局。
HTML:

<div ...>
    <svg id="legend-svg"></svg>
</div>

JavaScript:

// set height of svg
d3.select("#legend-svg").attr("height", 18*(groups.length+1));

// for each group, append rect then text
groups.forEach(function(group, i) {
    d3.select("#legend-svg").append("rect")
        .attr("y", i*20)
        .attr("width", 18)
        .attr("height", 18)
        .style("fill-opacity", 1)
        .style("fill", function (d) { return c(i); });
    d3.select("#legend-svg").append("text")
        .attr("x", 25)
        .attr("y", i*20+15)
        .text(group);
});

最佳答案

SVG 元素,如 <rect>不能是 html <div> 的直接子代元素。您必须将它们放在 <svg> 中容器元素。

关于javascript - d3 rect 没有显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28698696/

相关文章:

javascript - 当鼠标悬停在 D3js 中的其中一张 map 上时,如何显示多个 map 的工具提示

javascript - D3 径向树状图只显示部分

javascript - attrTween 函数未被调用

javascript - 浏览器快捷方式——添加网址

c# - 如何在.Net中不使用滚动条来移动 GridView 的行

javascript - 具有 .txt 输出的富文本编辑器

jquery - 打开带有 anchor 链接的特定 Accordion

javascript - npm 在哪里安装包?

javascript - 将 Facebook "Like"按钮与回调集成 - 不在事件中显示

jquery - 在页面其余部分之前加载 Logo ,然后 move 到静止位置并显示其余内容