Public
Edited
Nov 1, 2023
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
viewof reset = Inputs.button("Click me")
Insert cell
// Search by ward
viewof WardClass1 = Inputs.checkbox(projects_d3.map(d => d.WardName), {multiple: true, unique: true, label: "Select a Ward (control-click to select two or more)"})
Insert cell
// Create input for table based on user input

selectedRows = projects_d3.filter((d => ((!WardClass1.length || WardClass1.includes(d.WardName)) && search.includes(d.ProjectDesc))))
Insert cell
Insert cell
Insert cell
viewof WardClass2 = Inputs.checkbox(["All"].concat(projects_d3.map(d => d.WardName)), {multiple: true, unique: true, label: "Select a Ward (control-click to select two or more)"})
Insert cell
rows = projects_d3.filter((d => ((!WardClass2.length || WardClass2.includes(d.WardName)) && search.includes(d.ProjectDesc))))
Insert cell
Insert cell
viewof YearClass = Inputs.select(projects_d3.map(d => d.Year), {sort: true, unique: true, label: "Select a Year"})
Insert cell
selectedWards_old = projects_d3.filter((d => d.WardName === WardClass1, d=> d.Year === YearClass, d=> d.ProjectDesc === search)
Insert cell
Insert cell
projects_d3 = FileAttachment("proj_ward_level_obs@3.csv")
.csv() // no `{typed: true}` in `csv()`
.then((data) => {
data.forEach((d) => {
// d.Budget = d3.format(",.2f")(+d.Budget);
// d.Spent = d3.format(",.2f")(Number(d.Spent));
// d.Expended = d3.format(",.2f")(Number(d.Expended));
// d.Encumbered = d3.format(",.2f")(Number(d.Encumbered));
// d.PreEncumbered = d3.format(",.2f")(Number(d.PreEncumbered));
// d.PctSpent = d3.format(",.2f")(Number(d.PctSpent));
// d.Spent = d3.format(",.2f")(Number(d.Spent));
// d.Year = d3.format("d")(d.Year);

d.Budget = +d.Budget;
d.Spent = +d.Spent;
d.Expended = +d.Expended;
d.Encumbered = +d.Encumbered;
d.PreEncumbered = +d.PreEncumbered;
d.PctSpent = +d.PctSpent;
d.Year = +d.Year;
});
return data;
})
Insert cell
Insert cell
viewof transfers = aq
.fromCSV(await FileAttachment('transfers.csv').text())
.view({height:240})

Insert cell
transfers
.rename({"Transfer amount": "amount"})
.groupby("Giver")
.rollup({total_given: d=> op.sum(d.amount)})
.view()
Insert cell
Insert cell
//import arquero, langague similar to R that can be used in Observable

import {aq, op} from '@uwdata/arquero'
Insert cell
// vega-lite is similar to ggplot2
// require is pulling in the package vega-lite
vg = require('vega-lite')
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