Modern data visualization is largely a product of the sheer amount of data we produce.
In part this is a function of the digitization of most of our lives. 15 years ago there was no data.gov, it has added 300k data sets since then.
As technology advances, our data gets to be incredibly fine grained. This is a sample of ride share rides over a six year period. Each pixel is a pick up or drop off.
images from presentation on O-ring temperature anomaly
the result
Cholera outbreak. London, 1854. John Snow.
It has however, become a "library's library" in some ways. Most developers interact with d3 through a higher-level interface. We will be learning Altair, which generates Vega JSON, which in turn is drawn using D3. D3 underpins dozens of other charting libraries as well, and D3's own documentation says: D3 makes things possible, not necessarily easy; even simple things that should be easy are often not. To paraphrase Amanda Cox: “Use D3 if you think it’s perfectly normal to write a hundred lines of code for a bar chart.” Learning D3 both requires working in an unfamiliar environment (JavaScript) and with a very unique style of programming based around their concept of the ["data join"](https://d3js.org/d3-selection/joining), which requires a decent understanding of the HTML Document Object Model. So, if you are here to learn visualization, I think that it is fair that you can succeed in this class without putting yourself through that.