我是d3.js的新手,并且我有一个示例CSV文件
import {
select,csv,scaleLinear,max,scaleBand,axisLeft,axisBottom}
from 'd3';
const svg = select('svg');
const width = +svg.attr('width');
const height = +svg.attr('height');
const render = data =>{
const margin = { top: 20,right: 40,bottom: 20,left: 100 };
const innerWidth = width - margin.left - margin.right;
const innerHeight = height - margin.top - margin.bottom;
const ChinaFilter = data.filter(function(d){
return d.country.match ('China');
});
const IndonesiaFilter = data.filter(function(d){
return d.country.match ('Indonesia');
});
const RussiaFilter = data.filter(function(d){
return d.country.match ('Russia');
});
var Filter = [ChinaFilter.length,IndonesiaFilter.length,RussiaFilter.length];
var countryFilter = ['China','Indonesia','Russia'];
const xScale = scaleLinear()
.domain([0,max(Filter)])
.range([0,innerWidth]);
const yScale = scaleBand()
.domain(countryFilter)
.range([0,innerHeight])
.padding(0.1);
const g = svg.append('g')
.attr('transform',`translate(${margin.left},${margin.top})`);
g.append('g').call(axisLeft(yScale));
g.append('g').call(axisBottom(xScale))
.attr('transform',`translate(0,${innerHeight})`);
g.selectAll('rect').data(data)
.enter().append('rect')
.attr('y',yScale(countryFilter))
.attr('width',xScale(Filter))
.attr('height',yScale.bandwidth());
};
csv('data.csv').then(data => {
render(data);
});
完成并显示x轴和y轴后,无法创建和显示对应的条并显示该条。这是完整的代码
{{1}}
实际结果[1]:https://i.stack.imgur.com/rFJNU.png
以条形图格式显示的预期产出应为(China,3)(Indonesia,3)(Russia,4)