d3.js绘制对比柱状图
时间: 2023-10-01 17:04:55 浏览: 109
对比柱状图可以使用d3.js中的矩形图(rect)元素来绘制。以下是一个简单的例子:
HTML代码:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>D3.js对比柱状图</title>
<script src="https://d3js.org/d3.v5.min.js"></script>
</head>
<body>
<svg id="chart" width="400" height="300"></svg>
<script src="script.js"></script>
</body>
</html>
```
JavaScript代码:
```javascript
// 数据
var data = [
{name: 'A', value: 20},
{name: 'B', value: 35},
{name: 'C', value: 10},
{name: 'D', value: 15},
{name: 'E', value: 25}
];
// 定义svg画布大小
var width = 400;
var height = 300;
// 定义比例尺
var xScale = d3.scaleBand()
.domain(data.map(function(d) { return d.name; }))
.range([0, width])
.padding(0.1);
var yScale = d3.scaleLinear()
.domain([0, d3.max(data, function(d) { return d.value; })])
.range([height, 0]);
// 创建svg元素
var svg = d3.select('#chart')
.append('g')
.attr('transform', 'translate(' + 50 + ',' + 10 + ')');
// 绘制矩形
svg.selectAll('rect')
.data(data)
.enter()
.append('rect')
.attr('x', function(d) { return xScale(d.name); })
.attr('y', function(d) { return yScale(d.value); })
.attr('width', xScale.bandwidth())
.attr('height', function(d) { return height - yScale(d.value); })
.style('fill', 'steelblue');
```
解释:
1. 定义数据,包含每个柱子的名称和值。
2. 定义画布大小。
3. 定义x轴和y轴的比例尺,x轴比例尺使用`scaleBand`,y轴比例尺使用`scaleLinear`。
4. 创建svg元素,并将其偏移50像素到右侧和10像素到下方。
5. 绘制矩形,使用`selectAll`和`data`方法绑定数据,使用`enter`方法进入数据,使用`append`方法添加矩形元素,使用`attr`方法设置x、y、width和height属性,使用`style`方法设置颜色。
阅读全文