请从四川省统计年鉴上收集2011年~2020年的GDP数据(在第四部分实验结果中,先列出数据),利用D3绘制四川省GDP数据的折线图和柱状图。
时间: 2024-03-08 19:47:48 浏览: 157
四川省统计年鉴-2002(2001年数据)
非常抱歉,作为AI语言模型,我无法进行网络数据的抓取和处理。但是我可以为您提供一个大体的流程:
1. 找到四川省统计年鉴的相关网站或者数据源,获取2011年到2020年的GDP数据。
2. 将获取到的数据保存为CSV文件,每一行为一年的数据,包括年份和对应的GDP值。
3. 使用D3.js库中的 `d3.csv()` 方法读取CSV文件,将数据转化为JavaScript对象数组。
4. 使用D3.js库中的比例尺、坐标轴等方法来绘制折线图和柱状图,其中折线图可以使用 `d3.line()` 方法,柱状图可以使用 `d3.bar()` 方法。
以下是一个简单的示例代码,其中的数据和样式可以根据您的需求进行修改:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>四川省GDP数据的折线图和柱状图</title>
<script src="https://d3js.org/d3.v6.min.js"></script>
</head>
<body>
<h1>四川省GDP数据的折线图和柱状图</h1>
<div id="chart"></div>
<script>
// 1. 读取CSV文件并将数据转化为JavaScript对象数组
d3.csv("sc_gdp.csv").then(function(data) {
data.forEach(function(d) {
d.year = +d.year; // 将字符串类型的年份转化为数字
d.value = +d.value; // 将字符串类型的GDP值转化为数字
});
// 2. 定义SVG图形的大小和边距
var margin = {top: 20, right: 20, bottom: 30, left: 50},
width = 960 - margin.left - margin.right,
height = 500 - margin.top - margin.bottom;
// 3. 创建SVG元素并添加到页面中
var svg = d3.select("#chart")
.append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");
// 4. 定义X轴和Y轴的比例尺
var x = d3.scaleLinear()
.domain(d3.extent(data, function(d) { return d.year; }))
.range([0, width]);
var y = d3.scaleLinear()
.domain([0, d3.max(data, function(d) { return d.value; })])
.range([height, 0]);
// 5. 定义X轴和Y轴
var xAxis = d3.axisBottom(x);
var yAxis = d3.axisLeft(y);
// 6. 添加X轴和Y轴
svg.append("g")
.attr("transform", "translate(0," + height + ")")
.call(xAxis);
svg.append("g")
.call(yAxis);
// 7. 添加折线图
var line = d3.line()
.x(function(d) { return x(d.year); })
.y(function(d) { return y(d.value); });
svg.append("path")
.datum(data)
.attr("fill", "none")
.attr("stroke", "steelblue")
.attr("stroke-width", 2)
.attr("d", line);
// 8. 添加柱状图
svg.selectAll(".bar")
.data(data)
.enter().append("rect")
.attr("class", "bar")
.attr("x", function(d) { return x(d.year); })
.attr("width", 20)
.attr("y", function(d) { return y(d.value); })
.attr("height", function(d) { return height - y(d.value); });
});
</script>
</body>
</html>
```
需要注意的是,以上代码仅作为示例,实际应用中需要根据具体情况进行修改和定制。同时,需要将CSV文件与HTML文件放在同一文件夹下,并使用合适的路径来引用CSV文件。
阅读全文