Published
Edited
Nov 9, 2020
3 stars
Insert cell
Insert cell
Insert cell
import { select } from "@jashkenas/inputs"
Insert cell
viewof metric = select(["type", "degree_length"])
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
by_type_chart = {
const div = d3.create("div");
const charts = div
.selectAll("div")
.data(by_type_data) // this will have only 4 elements in it
.join("div")
.style("height", chart_height + "px")
.style("width", chart_width + "px")
.attr("class", "chart-container")
.call(drawChart);

return div.node();
}
Insert cell
Insert cell
chart_height = 300
Insert cell
chart_width = 400
Insert cell
x = d3
.scaleLinear()
.domain(d3.extent(chart_data, d => d.x))
.range([margin.left, chart_width - margin.right])
Insert cell
y = d3
.scaleLinear()
.domain(d3.extent(chart_data, d => d.y))
.range([chart_height - margin.bottom, margin.top])
Insert cell
Insert cell
tickFormatter = d3.format("$.2s")
Insert cell
xAxis = g =>
g
.attr("transform", `translate(0,${chart_height - margin.bottom})`)
.call(d3.axisBottom(x).tickFormat(tickFormatter))
Insert cell
yAxis = g =>
g
.attr("transform", `translate(${margin.left},0)`)
.call(d3.axisLeft(y).tickFormat(tickFormatter))
Insert cell
xLabel = ele =>
ele
.text("In State Tuition")
.attr("x", (x.range()[1] - x.range()[0]) / 2)
.attr("y", chart_height - margin.bottom + 35)
.style('font-family', "sans-serif")
.style("font-size", '14px')
Insert cell
chartTitle = ele =>
ele
.text(d => d[0]) // here is the other (corresponding) tricky part!
.attr("transform", `translate(${chart_width / 2}, ${20})`)
.style("text-anchor", "middle")
.style('font-family', "sans-serif")
Insert cell
yLabel = ele =>
ele
.text("Out of State Tuition")
.attr(
"transform",
`translate(${margin.left - 40}, ${chart_height / 2})rotate(-90)`
)
.style("text-anchor", "middle")
.style('font-family', "sans-serif")
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
html`<style>
.chart-container {
display:inline-block;
}
</style>`
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