3 ms·
Data viz used to be my playground, I feel like I can comment on this with some confidence. It feels like the selling point / value prop here is that it supports
by btbuildem 4y ago
Data viz used to be my playground, I feel like I can comment on this with some confidence. It feels like the selling point / value prop here is that it supports multiple FE frameworks, but that's where its strengths end for me. It almost looks like a coding exercise more than a library that people would use - seems a great amount of effort went into boilerplate, configs, packaging, documentation etc, but not as much into the features themselves.
The tell-tale brushes in some of the interactive graphs hint at d3 as the foundation layer, and poking through the configs confirms that. The real power of d3 lies in how it integrates data with the rendered elements - transitions, filters, being able to use one set of graphs to drive the parameters of another set, etc. With d3, you get interactivity for very very cheap, it's a missed opportunity here not to extend that (most graphs in the gallery seem static).
Overall there is nothing that makes this stand out over other offerings. Other commenters provided some good examples. I'd mention Altair/Vega as an example of powerful / configurable library that can be driven from either FE or BE. D3 as the gold standard of a low-level visualization primitives library with unsurpassed flexibility. If you're after something more out of the box with a DS angle, Dash does a decent job (and plotly.js for an overwhelming viz feature set). For commercial solutions, HighCharts, as much of a drag as it can be, is still the reliable beige khaki offering. CanvasJS would be another one in that space. If you want to dabble in 3D visualization, three.js is by far both the best starting place and the most robust library you can ask for. Honorable mention for dc.js, as they make good use of the crossfilter approach (driving context/selection across multiple graphs)
The js data viz space is quite full, with some heavy-duty, established players. To be a new entrant on this playing field, you'd have to bring something breakthrough to the table. Sorry.
- mbo 4y agoYou've cited D3 but I notice that you haven't mentioned Observable's Plot[0], a Javascript GoG that wraps D3. They're both Mike Bostock libraries, so Plot is the pseudo-"blessed" D3 high-level abstraction layer. [0] https://observablehq.com/@observablehq/plot https://observablehq.com/@observablehq/plot
- btbuildem 4y agoI'm not up to speed on the latest -- thanks for linking this, it looks great! I've shied away from Observable, I didn't quite like the lock-in to their notepad-like env, and all the examples following what to me felt like a backward style. It's great to see they've produced a higher-level complement to d3.
- deleted 4y ago[deleted]
- mbo 4y agoI empathize - I was a little worried about what would happen to my work if Observable shut down. But the lock-in is less severe these days. The parser, runtime and standard lib are all open-source, so you can run a full notebook in VSCode https://marketplace.visualstudio.com/items?itemName=GordonSmith.observable-js https://marketplace.visualstudio.com/items?itemName=GordonSm... I've come to appreciate the non-standard extensions they've made to JS too - the reactive cell model has greatly reduced the amount of code I've needed to write compared to a hypothetical React equivalent. It's my #1 platform for my small side projects these days. I'll quickly note for anyone uncertain - Plot is pure JS so it doesn't have to be used in an Observable notebook. Will run anywhere D3 does.
- porker 4y agoThanks for the great summary. It's been years since I was in this field so very helpful to hear what's now available. What would you use to plot (or downsample and plot) data that updates every second or more frequently? E.g. IoT data streaming in? I used dygraphs (I think) a decade ago and recently found Lightning JS and this comparison [1] to other libraries, but the LightningJS license costs are prohibitive outside of well-to-do project domains. And I don't have data that updates that fast - just don't want it badly sampled or drawn. 1. https://github.com/Arction/javascript-charts-performance-comparison https://github.com/Arction/javascript-charts-performance-com...
- baandang 4y agoWe really just need generative prompts and AI to decimate the field of dataviz. 99.999% of anything ever done in D3 is 100% useless visualization. The whole field of dataviz is largely much ado about nothing. I just can't imagine in the next 10 years we don't see a generative prompt that spits out something with D3 and we can move on to something more useful. The end goal is easily described in natural language. We shouldn't need Oppenheimer as the project manager to make some SVG boxes and lines.