在html页面使用D3可视化库方法完成以下要求,按照var dataset=[[66, 77],[23, 45],[20, 68],[123, 23],[93, 73], [242, 44],[25, 67],[85, 21],[220, 88]];作为数据,在id为map的div中绘制散点图,散点需要标明坐标,散点颜色为#法0
时间: 2023-08-18 14:14:41 浏览: 68
D3:使用D3进行数据可视化
好的,以下是实现代码:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>D3.js Scatter Plot Example</title>
<script src="https://d3js.org/d3.v5.min.js"></script>
</head>
<body>
<div id="map"></div>
<script>
var dataset = [[66, 77],[23, 45],[20, 68],[123, 23],[93, 73],[242, 44],[25, 67],[85, 21],[220, 88]];
var svgWidth = 600, svgHeight = 400, margin = 50;
var width = svgWidth - 2*margin, height = svgHeight - 2*margin;
var svg = d3.select("#map")
.append("svg")
.attr("width", svgWidth)
.attr("height", svgHeight);
var xScale = d3.scaleLinear()
.domain([0, d3.max(dataset, function(d) { return d[0]; })])
.range([0, width]);
var yScale = d3.scaleLinear()
.domain([0, d3.max(dataset, function(d) { return d[1]; })])
.range([height, 0]);
svg.selectAll("circle")
.data(dataset)
.enter()
.append("circle")
.attr("cx", function(d) {
return xScale(d[0]);
})
.attr("cy", function(d) {
return yScale(d[1]);
})
.attr("r", 5)
.attr("fill", "#f00");
var xAxis = d3.axisBottom(xScale);
var yAxis = d3.axisLeft(yScale);
svg.append("g")
.attr("transform", "translate("+margin+","+height+")")
.call(xAxis);
svg.append("g")
.attr("transform", "translate("+margin+",0)")
.call(yAxis);
</script>
</body>
</html>
```
解释一下代码:
首先,我们定义了一个数组 `dataset` 来存储散点的坐标数据。
然后,我们通过 D3.js 创建了一个 SVG 元素,并设置了它的宽度和高度。同时,我们也定义了一些变量来表示图表中的边距、宽度和高度等参数。
接下来,我们使用 `d3.scaleLinear()` 方法来创建了两个比例尺 `xScale` 和 `yScale`,分别对应 x 轴和 y 轴上的值域和像素值之间的转换关系。
然后,我们使用 `svg.selectAll("circle")` 方法来选择所有的圆圈元素,并绑定数据集 `dataset`。使用 `.enter()` 和 `.append("circle")` 方法来创建新的圆圈,并设置它们的位置和半径等属性,其中,圆圈的位置通过比例尺转换得到。
最后,我们使用 `d3.axisBottom()` 和 `d3.axisLeft()` 方法来创建了 x 轴和 y 轴的刻度线,并将它们添加到 SVG 中。
阅读全文