Public
Edited
Dec 5, 2023
Insert cell
Insert cell
Insert cell
Insert cell
offencesList=d3.csv("https://raw.githubusercontent.com/Archer001201/IAT355/main/Number%20of%20Offences-Criminal%20Code%20Offences.csv",d3.autoType)
Insert cell
TotalOffenceList=d3.csv("https://raw.githubusercontent.com/Archer001201/IAT355/main/TotalOffences.csv",d3.autoType)
Insert cell
PropertyOffencesList = d3.csv("https://raw.githubusercontent.com/Archer001201/IAT355/main/PropertyOffences.csv", d3.autoType)
Insert cell
Insert cell
Insert cell
offenceCase = offencesList.flatMap(d => {
return Object.keys(d).filter(key => key !== 'CRIMINAL CODE OFFENCES').map(year => {
let count = d[year];
if (typeof count === 'string') {
count = count.replace(/,/g, '');
}
return {
Year: year,
Offence: d['CRIMINAL CODE OFFENCES'],
Count: +count
};
});
});
Insert cell
vl.markLine()
.data(offenceCase)
.encode(
vl.x().fieldO('Year').title('Year'),
vl.y().fieldQ('Count').title('Number of Offences'),
vl.color().fieldN('Offence').title('Criminal Code Offences')
)
.width(500)
.height(300)
.render();

Insert cell
Insert cell
Insert cell
Insert cell
propertyOffencesData = TotalOffenceList .flatMap(d => {
return Object.keys(d).filter(key => key !== 'CRIMINAL CODE OFFENCES').map(year => {
let count = d[year];
if (typeof count === 'string') {
count = count.replace(/,/g, '');
}
return {
Year: year,
Offence: d['CRIMINAL CODE OFFENCES'],
Count: +count
};
});
});
Insert cell
Insert cell
Insert cell
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more