Published
Edited
May 14, 2020
6 forks
Importers
2 stars
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
by_type_data = d3
.nest()
.key(d => d.type)
.entries(chart_data)
Insert cell
by_type_chart = {
const div = d3.create("div").style("display", "block");
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("text-anchor", "middle")
.style("font-size", '14px')
Insert cell
chartTitle = ele =>
ele
.text(d => d.key)
.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