If you want to do dynamic visualisation with something like Python or R in a browser you need need a server, and that incurs significant latency.
D3 also allows much more fine grained control over visualisations than any visualisation library or package I’ve worked with in any language, because you have total control of every line, point, every fill.
No matter what crazy design the design team comes up with for your website, D3 will let you bind data to it and turn it into a workable chart.
It was written by an editor at the New York Times, and it is designed for producing bespoke visualisations on public facing showcase pages where appearances and speed have to be state of the art.
Not true. Bokeh (http://bokeh.pydata.org) lets you build interactive web graphics that run purely embedded in a static HTML file. No server needed.
(Of course, it also has a server-based mode that lets you build interactive analytical viz apps, with browser interactions automagically driving Python callbacks)
It's not so much for people wanting to make new 'instances' of a visualisation. It's more for people wanting to make new 'classes' of visualisations.
It is oriented around the lifecycles of instances of data - eg entry and exit hooks to run as data appears and disappears, and it has a lot of powerful lower level functionality.
https://archive.nytimes.com/www.nytimes.com/interactive/2012...
d3 is for interactive charts
everyone has a web browser...
This is a limitation that may make no difference in some cases, but in others it is important for code to execute in the client.
A good example of this is making a visualization that seamlessly responds to the user's mouse pointer.
The only output I can find in Jupyter that is not static is coming from Bokeh which takes Python and generates javascript code to run in the browser. Jupyter itself calls this "a style of D3".
Write Python, make interactive web plots.