viewof dashboard = {
const crimeBarChart = vl.markBar()
.encode(
vl.x().fieldN("Primary Type").title("Primary Type"),
vl.y().count("Primary Type").title(null),
vl.color().fieldN('Primary Type').scale({
domain: ['BURGLARY', 'HOMICIDE', 'ROBBERY'],
range: ['#f72585','#7209b7','#3a0ca3']
})
)
const crimeBarChartLayer = vl.layer(
crimeBarChart.params(brush).encode(vl.color().value('lightgrey')),
crimeBarChart.transform(vl.filter(brush))
)
.title("Number of Crimes by Type")
.data(crimes)
.width(width*0.4)
.height(200)
const crimeLineChart = vl.markLine()
.encode(
vl.x().fieldT("Date").timeUnit("datemonth").title("Date (month-date)"),
vl.y().count("Date").title(null),
vl.color().fieldN('Primary Type')
)
const crimeLineChartLayer = vl.layer(
crimeLineChart.params(brush).encode(vl.color().value('lightgrey')),
crimeLineChart.transform(vl.filter(brush))
)
.title("Number of Crimes by Day")
.data(crimes)
.width(width*0.4)
.height(150)
return vl.hconcat(map_view, vl.vconcat(crimeBarChartLayer,crimeLineChartLayer))
.resolve({scale: {size: 'independent'}})
.title({text: "Crimes in Chicago in August 2022", fontSize: 25})
.render();
}