2016-01-12 4 views
1
d3.json("data.json", function(error, data) { 
    if (error) throw error; 
var div = d3.select("body").append("div") 
    .attr("class", "tooltip")    
    .style("opacity", 0); 
    var svg = d3.select("body").selectAll("svg") 
     .data(data) 
    .enter().append("svg") 
     .attr("class", "bullet") 
     .attr("width", width + margin.left + margin.right) 
     .attr("height", height + margin.top + margin.bottom).on("mouseover", function(d) {   
      div.transition()   
       .duration(200)  
       .style("opacity", .9);  
      div.html("Tooltip" + "<br/>" + d.measures);  
      }) 
    .append("g") 
     .attr("transform", "translate(" + margin.left + "," + margin.top + ")") 
     .call(chart); 

Getting ниже результата: enter image description hereподсказки в d3 JS (Пули диаграммы)

результата того, что я ожидал: enter image description here

Есть ли ошибка в моем коде или мне нужно сделать что-то иначе.

ответ

1

Вам нужно будет обновить положение подсказки инструмента на мыши.

.on("mouseover", function(d) {   
     div.transition()   
     .duration(200)  
     .style("opacity", .9) 
     .style("left", (d3.event.pageX) + "px") //Set X 
     .style("top", (d3.event.pageY) + "px"); //Set Y 
     div.html("Tooltip" + "<br/>" + d.measures);  
}); 
+0

Большое спасибо, что работает. Но мне нужно добавить (d3.event.pageX - 250), чтобы сохранить подсказку внутри диаграммы. Есть ли способ справиться с этим динамически. – SiddP

+0

Значение 250 может быть верхним значением смещения SVG. Вы можете использовать 'd3.select (" svg "). Node(). OffsetTop' в этом случае. – Gilsha

+0

Все еще не работает. Пожалуйста, просмотрите [ссылку] (http://postimg.org/image/kuhdxi8gv/) по проблеме, с которой я столкнулся. – SiddP