请使用HTML5中的Canvas绘制动态饼图,页面效果如图8-30所示。 要求在4个季度对应的文本输入框中输入数值,并单击“提交”按钮时,会生成对应的饼图。
时间: 2024-11-09 18:19:34 浏览: 10
html5 canvas动态的饼状图动画特效
在HTML5中,可以利用Canvas API来绘制动态饼图。首先,你需要设置一个Canvas元素用于绘图,以及四个输入框让用户输入每个季度的数值。当用户点击“提交”按钮时,JavaScript将处理数据并更新饼图。
以下是一个简单的步骤说明:
1. **HTML结构**:
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>动态饼图</title>
</head>
<body>
<input type="number" id="quarter1" placeholder="季度1值">
<input type="number" id="quarter2" placeholder="季度2值">
<input type="number" id="quarter3" placeholder="季度3值">
<input type="number" id="quarter4" placeholder="季度4值">
<button onclick="drawChart()">提交</button>
<canvas id="pieChart"></canvas>
<script src="chart.js"></script>
</body>
</html>
```
2. **JavaScript (chart.js)**:
```javascript
// 获取HTML元素和Canvas
const quarters = document.querySelectorAll('input[type=number]');
const pieChart = document.getElementById('pieChart');
let quarterData = [0, 0, 0, 0]; // 存储每个季度的数据
function drawChart() {
quarters.forEach((input, i) => {
quarterData[i] = Number(input.value);
});
// 饼图绘制函数
const ctx = pieChart.getContext('2d');
const total = quarterData.reduce((a, b) => a + b, 0);
quarterData.forEach((value, index) => {
ctx.beginPath();
ctx.arc(pieChart.width / 2, pieChart.height / 2, pieChart.width / 4 - 10, (Math.PI * 2 * index / total), (Math.PI * 2 * (index + 1) / total));
ctx.fillStyle = `hsl(${(index * 120) % 360}, 70%, 50%)`; // 颜色渐变
ctx.fill();
ctx.stroke();
ctx.fillStyle = 'white';
ctx.font = 'bold 14px Arial';
ctx.textAlign = 'center';
ctx.fillText(`${(value / total * 100).toFixed(2)}%`, pieChart.width / 2, pieChart.height / 2 - 20 + (index * 50));
});
}
```
在这个示例中,当你提交数据时,`drawChart`函数会被触发,计算总和并将每个季度的百分比显示在饼图上。记得在实际项目中,你需要确保在画布准备好后再初始化图表绘制。
阅读全文