d3.js - 条形图未显示在分组条形图中
问题描述
我正在尝试创建一个分组条形图,显示学生出勤率(出席或缺席),但由于某些原因,我的图表只显示一组条形图(最高代表出席,最高代表缺席。在检查控制台时,我看到剩下的柱子在那里,但它们没有出现在图表上。我不知道问题是我的数据还是我的代码(我只包含了代码的 js 部分)
const SVG = {
height: 900,
width: 900
}
const margin = {top: 40, bottom: 40, right: 40, left: 40};
const innerWidth = SVG.width - margin.left - margin.right;
const innerHeight = SVG.height - margin.top - margin.bottom;
const bar = d3.select('body').append('svg').attr('width', SVG.width).attr('height', SVG.height);
const grp = bar.append('g').attr('transform', `translate(${margin.left}, ${margin.top})`);
const data = d3.csv('WEEK.csv')
.then(
function(data) {
console.log(data);
const keys = data.columns.slice(1);
console.log(keys)
const group = d3.map(data, function(d){return +d.Week}).keys()
const x0 = d3.scaleBand().domain(group)
.range([0, innerWidth]).padding(0.1)
const x1 = d3.scaleBand().domain(keys)
.range([0, x0.bandwidth()]).padding(0.05)
const y0 = d3.scaleLinear().domain([0, d3.max(data, function(d) {return d3.max(keys, function (key){return +d[key];}
)})])
.range([innerHeight, 0]);
const color = d3.scaleOrdinal().range('#fcba03', '#eb4034')
const yAxis = d3.axisLeft(y0);
const xAxis = d3.axisBottom(x0);
const yAxisG = grp.append('g').call(yAxis)
const xAxisG = grp.append('g').call(xAxis)
.attr('transform', `translate(0, ${innerHeight})`);
grp.append('g')
.selectAll('g')
.data(data)
.enter().append('g')
.selectAll('rect')
.attr("transform", function(d) {return "translate(" + x0(+d.Week) + ",0)"})
.data(function(d){return keys.map(function(key){return{key: key, value: +d[key]} }) })
.enter()
.append('rect')
.attr('width', x1.bandwidth())
.attr('height', d => (innerHeight - y0(d.value)))
.attr('y', d => y0(d.value))
.attr('x', d => x1(d.key))
.attr('fill', d => color(d.key));
})
数据集:Week ,Present,Absent 2,10481,4010 3,11277,4551 4,10499,5036 5,9970,5126 6,8901,4909 7,7929,8405 8,7995,5062 9,7785,5447 10, 7670,5822 11,7177,6162 12,6258,6499 13,4689,6631
解决方案
推荐阅读
- java - 试图用数组文本填充列表视图
- java - 使用 javassist 匿名内部类时如何访问外部类的实例变量?
- lisp - 为什么下面的 lisp 代码没有给出想要的结果
- javascript - 如何将以下 json 字符串解析为对象?
- c# - 正则表达式只允许这些 [AZ] / [az] / [0-9] / "-" / "." /“_”/“~”
- javascript - Fulcrum 中可重复部分中的选定选项可以用作标签吗?
- python - 使用etree和LXML在python开头解析带有编码块的XML字符串
- javascript - discord.js 语音频道成员数
- wix - WIX:从对话框复选框设置注册表值
- go - 启动 Beam 时同步 pod 时出错 - 来自 docker 的数据流管道