matrixChart = {
const svg = d3.create('svg')
.attr('viewBox', [0, 0, width, height]);
var chart = svg.append('g')
.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
var row = svg.selectAll('g.row')
.data(graphMatrix)
.join('g')
.attr('class', 'row')
.attr('transform', function (d, i) {return 'translate(0,' + x(i) + ')'; })
.each(makeRow)
function makeRow(d, i) {
const rowData = d;
var cell = d3.select(this).selectAll('rect')
.data(graphMatrix)
.join('rect')
.attr('x', (d, i) => x(i))
.attr('width', x.bandwidth())
.attr('height', x.bandwidth())
.style('fill', (d, i) => {
return colorScale(Object.values(d.connections[i]));
})
}
row.append('text')
.attr('class', 'label')
.attr('x', margin.left - 4)
.attr('y', x.bandwidth() / 2)
.attr('dy', '0.32em')
.attr('font-size', '10px')
.attr('text-anchor', 'end')
.text(d => d.aiport);
var column = svg.selectAll('g.column')
.data(graphMatrix)
.join('g')
.attr('class', 'column')
.attr('transform', function(d, i) { return 'rotate(-90, '+margin.top+', '+margin.left+')'; })
.append('text')
.attr('class', 'label')
.attr('x', margin.top + 4)
.attr('y', (d,i) => x(i) + x.bandwidth() / 2)
.attr('dy', '0.32em')
.attr('font-size', '10px')
.text(d => d.airport)
return svg.node();
}