使圆环图可点击
Make donut chart clickable
任何人都可以帮助我如何使我的以下圆环图可点击吗?我只是从一些虚拟数据创建一个甜甜圈图表,并希望甜甜圈的每个部分都可以点击。我是 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>
你只需要select全部path
并绑定事件点击就可以了
svg.selectAll('path')
.on('click', (d, i, n) => {
console.log(d, i, n)
})
任何人都可以帮助我如何使我的以下圆环图可点击吗?我只是从一些虚拟数据创建一个甜甜圈图表,并希望甜甜圈的每个部分都可以点击。我是 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>
你只需要select全部path
并绑定事件点击就可以了
svg.selectAll('path')
.on('click', (d, i, n) => {
console.log(d, i, n)
})