【发布时间】:2019-09-11 05:07:21
【问题描述】:
我正在尝试构建条形图,但当我将其加载到本地服务器时,我的 html 页面上看不到任何内容。
这是我的 java 脚本:
var formatYear = d3.timeFormat("%Y");
var svg = d3.select('body').select('svg')
const width = d3.select('body').append('svg').attr('width');
const height = d3.select('body').append('svg').attr('height');
// create d3 data join
// load csv file
d3.csv('q3.csv').then(data => {
data.forEach(d => {
d.year = Date(+d.year, 1, 0); //parse data
d.running_total = +d.running_total // parse data
});
render(data);
});
const render = data => {
const xValue = d => d.running_total;
const yValue = d => d.year;
const xScale = d3.scaleLinear()
.domain([0, d3.max(data, d => d.running_total)])
.range([0, d3.max(data, d => d.year)]);
const yScale = d3.scaleBand()
.domain(data.map(d => d.year))
.range([0, height]);
svg.selectAll('rect').data(data)
.enter().append('rect')
.attr('y', d => yScale(d.running_total))
.attr('width', d => xScale())
.attr('height', yScale.bandwidth())
};
我首先检查以确保我的数据已正确加载并且确实如此。我在控制台上看到它。我认为我的 append.() 函数有问题,但我已经广泛搜索,它们似乎都有相同的概念: 1.您有一个元素(在这种情况下为矩形) 2. 你有你的数据 3. 将数据追加到元素
这部分代码似乎是错误的,但我似乎无法弄清楚。
这是我的html代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Lego Sets by Year from Rebrickable</title>
<script type="text/javascript" src="lib/d3/d3.min.js"></script>
</head>
<body>
<svg width='960' height='500'></svg>
<script type="text/javascript" src="main1.js"></script>
<h1>Lego Sets by Year from Rebrickable</h1>
<P align=right>xxxxxxx <P>
</body>
</html>
这是我的 csv 文件的第一行:
year running_total
1949 5
【问题讨论】:
-
您的 HTML 中没有 SVG。因此,这个:
var svg = d3.select('body').select('svg')是null。 -
我在正文下添加了以下内容: 但我什么也没得到。虽然没有错误
-
请添加“q3.csv”示例
-
运行年_总计 1949 5
-
@altocumulus 我能够解析数据。问题是我可以在控制台上看到矩形(元素),但在网页上看不到。它们有一个高度和宽度。
标签: javascript html d3.js svg