Box zoom would need to be added to Vega-Lite first, and there has been some discussion around it in https://github.com/vega/vega-lite/issues/4742. Bottom line is that there's nothing blocking its implementation, someone just needs to do the work in Vega-Lite. And once released in Vega-Lite, Altair would pick it up automatically with how we generate the Altair API from the Vega-Lite schema.
HN user
jmmease
https://github.com/jmmease https://www.linkedin.com/in/jon-mease/
(a current Altair maintainer and a former plotly.py maintainer here)
Plotly is definitely a great option as well, and it can do a bunch of things Vega-Altair is not designed for. One comment, just in case you weren't aware, is that there is a relatively new library that provides good integration between Altair and Dash: https://github.com/altair-viz/dash-vega-components. It even makes it possible to access Altair selection states in Dash callbacks so that you can have other dashboard components respond to selections.
(Disclaimer: I'm a Vega-Altair maintainer)
Thanks for the feedback and for the kind words! All of these drawbacks are fair, just a couple of comments.
There is an experimental package called altair_tiles that makes is possible to add OSM-style maptile backgrounds to Altair charts. See https://github.com/altair-viz/altair_tiles. This is mostly for static charts at the moment, as it doesn't integrate well with pan/zoom yet.
As you mentioned, VegaFusion is able to remove unused columns in most cases. (And if it doesn't for a particular case, please open an issue!).
Image export before Altair 5 was a bit complicated because it required either selenium plus a system web browser, or a node.js installation. In Altair 5, we switched to using vl-convert for image export, which is just a regular Python wheel with no external dependencies. So now, `chart.save("file.png")` should be just as easy to use as matplotlib's savefig!
(Disclaimer: I'm a Vega-Altair maintainer and the author of vl-convert)
VegaFusion author here. Happy to answer questions if anyone is interested in learning more!
Hi All, let me know if you have any questions about the new release (or anything else).
The tech behind the new static image export support is pretty interesting. It's the only static image export approach I'm aware of, for a Python+JavaScript visualization library, that's not selenium-based.
I spent hours a day juggling for ~4 years in my mid teens (in my 30s now) and got up to juggling 8 balls.
I find numbers juggling (say 5 or more) to be almost therapeutic. It requires a reasonable amount of physical exertion, and it just pulls you into a flow state. All of your mental and physical focus is concentrated on maintaining this ephemeral pattern, and there's no room for anything else... until the pattern falls apart :-)
Do you have ipywidgets >= 7.2 installed (See install instruction at https://github.com/plotly/plotly.py)?
ipywidgets is an optional dependency and FigureWidget won't be available without it.
Rock solid export of high-quality static images is really important to me too. Fortunately the hard part is already done (in orca). Integrating orca into plotly.py is the very next feature I'm going to start working on after I get through SciPy next week, so hopefully it won't be too much longer...
Yes! You use the trace.on_selection method to register a callback function. Here's an example: https://github.com/jonmmease/plotly_ipywidget_notebooks/blob...
Actually, you don't need to sink any investment into a commercial ecosystem here!
plotly.py and the plotly.js rendering library are both MIT licensed, developed in the open on GitHub, and totally self-contained.
Everything in the technology stack used in the announcement post is free, open source, self-contained, usable offline, and doesn't require an account. The plot.ly cloud integration is totally optional.
Cool! Here are a few ways to get the interactive visualizations elsewhere (outside of the notebook).
1) You can save them to a standalone, self-contained, html file: See https://community.plot.ly/t/proper-way-to-save-a-plot-to-htm...
2) You can save them to an html <div> element and embed them in another web page: See https://stackoverflow.com/a/38032952/4551895
3) You can upload them to plot.ly and share the link
Thanks!
Yeah, I should have clarified that I meant in 2D. ipyvolume is super impressive, and I didn't know you were working on bringing some of that webgl goodness to bqplot. Very cool!
Does ipyvolume have support some kind of points selection in 3D? Or is the idea that you'd perform selections using 2D projections in bqplot?
BTW, I got a GitHub notification of a comment that you were having trouble installing it. But I can't find the comment in GitHub itself.
Sure thing! But full disclosure, I wasn't actually involved in any of the versions of plotly.py before 3.0.0 :-)
Hopefully 3.0.0 will be even more fun!
I haven't looked into this specifically. Using the FigureWidget approach in 3.0.0 doesn't actually require the current @jupyterlab/plotly-extension. It's all contained in the new plotlywidget extension.
Hi HN,
This is Jon from the release announcement. AMA!