#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)
})