html里用svg绘制柱形图和折线图,显示文字标签和数据标签,代码
时间: 2024-10-25 16:18:25 浏览: 36
HTML5柱形条形折线数据统计图特效代码
在HTML中使用SVG(Scalable Vector Graphics)绘制柱状图和折线图,结合CSS样式和JavaScript可以实现丰富的视觉效果。以下是简化的例子,展示了如何创建基本的柱状图:
```html
<!DOCTYPE html>
<html lang="zh">
<head>
<style>
.chart {
width: 400px;
height: 300px;
background-color: #f5f5f5;
}
.bar rect {
fill: steelblue;
cursor: pointer;
}
text {
font-size: 14px;
}
</style>
</head>
<body>
<div class="chart" id="barChart"></div>
<script>
const data = [
{ label: 'A', value: 20 },
{ label: 'B', value: 40 },
{ label: 'C', value: 60 },
{ label: 'D', value: 80 }
];
function drawBarChart() {
const chart = document.getElementById('barChart');
chart.innerHTML = '';
data.forEach(item => {
const rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
rect.setAttribute('x', `${item.label.length * 10}px`);
rect.setAttribute('y', `${data[0].value}px`);
rect.setAttribute('width', `${10}px`);
rect.setAttribute('height', `${item.value}px`);
rect.className = 'bar';
rect.textContent = item.value;
// 数据标签
const dataLabel = document.createElementNS("http://www.w3.org/2000/svg", "text");
dataLabel.textContent = `${item.value}`;
dataLabel.setAttribute('x', `${item.label.length * 10 + 5}px`);
dataLabel.setAttribute('y', `${item.value - 5}px`);
dataLabel.setAttribute('transform', `rotate(-90 ${item.label.length * 10 + 5}px ${item.value - 5}px)`);
rect.appendChild(dataLabel);
chart.appendChild(rect);
});
}
drawBarChart();
</script>
</body>
</html>
```
对于折线图,我们可以使用相同的思路,但是需要创建`path`元素并调整路径数据。这超出了基础示例范围,但你可以参考SVG路径API和在线库如D3.js(https://d3js.org/)来创建复杂的折线图表。
阅读全文