Сделать диаграмму пончиков интерактивной

#d3.js #clickable #donut-chart

#d3.js #интерактивно #диаграмма пончиков

Вопрос:

Кто-нибудь может мне помочь относительно того, как я могу сделать мою следующую диаграмму пончиков интерактивной? Я просто создаю диаграмму пончика из некоторых фиктивных данных и хочу, чтобы каждая часть пончика была интерактивной. Я новичок в D3, и мне трудно включить функцию щелчка в диаграмму пончиков. Мне трудно сделать каждую часть диаграммы пончика интерактивной в d3.js . Любая помощь приветствуется. Я добавил сюда свой фрагмент кода.

 function myFunction(width,height,margin,datax,dis,hg) {
    var radius = Math.min(width, height) / 2 - margin
    var svg = d3.select("#my_dataviz")
      .append("svg")
        .attr("width", width)
        .attr("height", hg)
      .append("g")
        .attr("transform", "translate("   width / dis   ","   height / 2   ")");
    var color = d3.scaleOrdinal()
      .domain(Object.keys(data))
      .range(d3.schemeDark2);
    var pie = d3.pie()
      .sort(null) 
    .value(function(d) {return d.value; })  
    var data_ready = pie(d3.entries(data))
    var arc = d3.arc()
      .innerRadius(radius * 0.5)       
    .outerRadius(radius * 0.8)
    svg
      .selectAll('allSlices')
      .data(data_ready)
      .enter()
      .append('path')
      .attr('d', arc)
      .attr('fill', function(d){ return(color(d.data.key)) })
      .attr("stroke", "white")
      .style("stroke-width", "2px")
    .style("opacity", 0.7)
    ;  }
    <script src="https://d3js.org/d3.v4.js"></script>
    <script src="https://d3js.org/d3-scale-chromatic.v1.min.js"></script>
 

Ответ №1:

Вам просто нужно выбрать все path и привязать событие, нажав на него

 svg.selectAll('path')
   .on('click', (d, i, n) => {
      console.log(d, i, n)
   })