将工具提示添加到使用svg路径生成的条形图

时间:2012-11-02 12:46:17

标签: javascript svg d3.js crossfilter

如何在使用svg路径生成的条形图中为每个条添加工具提示...是否可以使用bootstrap工具提示...? 我在下面提供了我的svg路径

 <path class="foreground bar" clip-path="url(#clip 0)" d="M36,100V68h20V100M108,100V29h20V100M180,100V71h20V100M252,100V-4h20V100M324,100V87h20V100"/>

我在下面的小提琴http://jsfiddle.net/mfAc4/6/中提供了svg生成的条形图... 如何将工具提示添加到每个栏?

任何建议都将不胜感激。

2 个答案:

答案 0 :(得分:2)

不确定引导程序的含义,但大多数UA会将title元素转换为工具提示。 E.g。

<path class="foreground bar" clip-path="url(#clip 0)" d="M36,100V68h20V100M108,100V29h20V100M180,100V71h20V100M252,100V-4h20V100M324,100V87h20V100">
    <title>tooltip text</title>
</path>

答案 1 :(得分:1)

查看:http://bl.ocks.org/2973775

请注意,在您的jsFiddle中,您实际上并未使用d3。但您可以轻松添加它以获取工具提示,请参阅here

var svg = d3.select("svg").attr("width", 400).attr("height", 400);

var vis = svg.append('g');

var txt = vis.append('text')
    .attr({ transform: 'translate(5,20)', fill:'red'})
    .text("Node Info");

d3.selectAll('.bar')
    .on("mouseover", function(d) { 
        var mousePos = d3.mouse(this);
        txt.text(mousePos);
        txt.attr({transform: 'translate(' + mousePos + ')'});
    })
    .on("mousemove", function(d) { 
        var mousePos = d3.mouse(this);
        txt.attr({transform: 'translate(' + mousePos + ')'}); 
    });

要弄清楚哪个栏需要查看鼠标x位置。你应该考虑使用d3 scale(它将在两个方向上映射 - 检查反转函数)。