javascript - 将跨度图标添加到 D3 条形图

标签 javascript d3.js

我正在制作一个相当基本的条形图,我试图在其中显示一个跨度图标,锚定在每个条形图的开头。显示哪个图标取决于栏的类别。例如,如果栏是蓝色的,我想要一个特定的图标,如果栏是红色的。

我附加并添加了显示在控制台中的跨度,但实际上并未出现在图表中的任何位置。

我将图标作为 span 存储在我的 css 中,每个版本对应插入的值名称。

我尝试了多种选择、排序等方式。但无法坚持下去。

var bars = svg.selectAll('.bar')
.data(data)
.enter().append('g')
.attr('class', 'bar');

bars.append('rect')

var icons = svg.selectAll('rect')
.data(data)
.enter().append("span")
.attr("class", function(d, i) {
    return "icon-" + d.value + "-right";
})
.attr('dx', -6)
.attr('dy', (bar_height / 2) +5)
.attr('text-anchor', 'start');

最佳答案

您应该使用 foreignObject 元素将 HTML 插入到 SVG 中。

像这样:

var icons = svg.selectAll('foreignObject').data(data);
icons.enter().append("foreignObject")
    .attr("class", function(d) { return "icon-" + d.value + "-right"; })
    .append("xhtml:body")
    .append("xhtml:span");

您还可以使用 text 元素将图标添加到 SVG:

var icons = svg.selectAll('text').data(data);
icons.enter().append("text")
    .html("&#xf00d") // utf-8 character for the icon

关于javascript - 将跨度图标添加到 D3 条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24762370/

相关文章:

javascript - 使用带有 Angular 2 的 http rest apis

javascript - Photo Sphere Viewer 插件 停止自动旋转

javascript - 如何手动切换 angular-ui-select 下拉菜单

javascript - 在 AngularJS 中通过 ng-repeat 绑定(bind)变量

javascript - 在 d3.js 中从 CSV 中选择一段数据

javascript - 如何将文本附加到 d3.js 中的一行

python - git graph父子表格格式

javascript - 使用 extJS 从 gridpanel 获取值

javascript - 函数调用时 d3.js 中的任意变量

javascript - 使 d3 序列 sunburst 示例适应新数据并出现 js 错误