Low Level APIs
The VegaFusion mime and widget renderers are built from lower-level primitives that can be used to integrate VegaFusion in non-Jupyter, and non-Python, contexts. Documentation of these lower-level constructs is not yet complete, so in the meantime please start a discussion if you’re interested in integrating VegaFusion somewhere new.
Pre-transform Vega specifications
VegaFusion supports transforming Vega specifications into new Vega specifications that have had their data transformations already applied. This is how the VegaFusion mime renderer works. The pre-transform logic can be invoked directly using the
See the pre_transform.ipynb notebook for more information.
Pre-transform Vega datasets
VegaFusion supports evaluating select datasets in a Vega specification and returning the results as pandas DataFrames. This is how the
vegafusion.transformed_data function extracts transformed data from an Altair Chart object.
See the pre_transform_datasets.ipynb notebook for more information.
Convert Vega-Lite to Vega
VegaFusion works with Vega specifications and has no support for working with Vega-Lite specifications directly. The VlConvert project was developed to make it easy to convert Vega-Lite to Vega without an external web browser or node.js runtime. The VegaFusion mime renderer and the
transformed_data() function both rely on the
vl-convert-python package to convert the Vega-Lite specifications produced by Altair into Vega specifications that are then processed by VegaFusion.
Custom SQL Connections
VegaFusion’s support for evaluating Vega transforms in DuckDB is built on a more general foundation that will be extended to support other SQL query engines in the future. The vegafusion-sql crate is responsible for generating dialect specific SQL, and already has initial support for the following SQL dialects:
Supporting an additional SQL database involves writing a new Python subclass of the
SqlConnection abstract class. An instance of this subclass may then be passed to the
vegafusion.runtime.set_connection method. If you’re interested in using VegaFusion with a new SQL query engine, please start a discussion.
Standalone web app
vegafusion-editor-grpc-web demo is an example of a simple web app that uses the vegafusion-wasm and vegafusion-embed packages. It connects directly to an instance of the VegaFusion Server over gRPC-Web.
vegafusion-embed libraries are the foundation of the client portion of the
VegaFusionWidget. By leveraging tonic’s support for gRPC-Web,
vegafusion-wasm is able to communicate with the VegaFusion server without an intermediary server or proxy.