使用g2画图点击饼图的一块触发事件怎么使用?给出详细解释和示例
在g2中,可以使用interaction方法来添加交互行为,包括点击事件。具体步骤如下:
- 创建一个基本的饼图。
const data = [
{ genre: 'Sports', sold: 275 },
{ genre: 'Strategy', sold: 115 },
{ genre: 'Action', sold: 120 },
{ genre: 'Shooter', sold: 350 },
{ genre: 'Other', sold: 150 }
];
const chart = new G2.Chart({
container: 'container',
width: 400,
height: 300
});
chart.source(data);
chart.coord('theta', {
radius: 0.8,
innerRadius: 0.5
});
chart.intervalStack()
.position('sold')
.color('genre')
.label('genre', {
offset: -25
})
.tooltip('genre*sold', (genre, sold) => {
return {
name: genre,
value: sold
};
});
chart.render();
- 添加交互行为,监听饼图的点击事件。
chart.interaction('pie-select', {
startEvent: 'click',
selectAxisStyle: {
fillOpacity: 0.5,
strokeOpacity: 0.5
},
selectStyle: {
lineWidth: 2
},
mode: 'multiple'
});
chart.on('pie-select', (ev) => {
const selectedItems = ev.selected;
// 处理选中项的逻辑
});
在上面的代码中,我们使用chart.interaction('pie-select', {...})方法来添加交互行为。其中,startEvent参数指定了触发交互行为的事件,这里我们使用了点击事件click。selectAxisStyle和selectStyle分别设置选中图形的样式。mode参数可以设置交互行为的模式,这里我们使用了multiple模式,即可以多选。
然后,我们通过chart.on('pie-select', {...})方法来监听饼图的点击事件。在回调函数中,可以处理选中项的逻辑,例如更新数据、重新渲染等操作。
这样,当用户点击饼图的一块时,就会触发相应的事件。
完整示例代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>G2 Pie Chart</title>
<script src="https://cdn.jsdelivr.net/npm/@antv/g2@4.1.6/dist/g2.min.js"></script>
</head>
<body>
<div id="container"></div>
<script>
const data = [
{ genre: 'Sports', sold: 275 },
{ genre: 'Strategy', sold: 115 },
{ genre: 'Action', sold: 120 },
{ genre: 'Shooter', sold: 350 },
{ genre: 'Other', sold: 150 }
];
const chart = new G2.Chart({
container: 'container',
width: 400,
height: 300
});
chart.source(data);
chart.coord('theta', {
radius: 0.8,
innerRadius: 0.5
});
chart.intervalStack()
.position('sold')
.color('genre')
.label('genre', {
offset: -25
})
.tooltip('genre*sold', (genre, sold) => {
return {
name: genre,
value: sold
};
});
chart.render();
chart.interaction('pie-select', {
startEvent: 'click',
selectAxisStyle: {
fillOpacity: 0.5,
strokeOpacity: 0.5
},
selectStyle: {
lineWidth: 2
},
mode: 'multiple'
});
chart.on('pie-select', (ev) => {
const selectedItems = ev.selected;
console.log(selectedItems);
});
</script>
</body>
</html>
在上面的示例中,当用户点击饼图的一块时,控制台会输出选中项的数据对象。你可以根据自己的需求,在chart.on('pie-select', {...})回调函数中处理选中项的逻辑
原文地址: http://www.cveoy.top/t/topic/iJ2g 著作权归作者所有。请勿转载和采集!