|
from .html import spec_to_html |
|
|
|
|
|
def spec_to_mimebundle( |
|
spec, |
|
format, |
|
mode=None, |
|
vega_version=None, |
|
vegaembed_version=None, |
|
vegalite_version=None, |
|
**kwargs, |
|
): |
|
"""Convert a vega/vega-lite specification to a mimebundle |
|
|
|
The mimebundle type is controlled by the ``format`` argument, which can be |
|
one of the following ['html', 'json', 'png', 'svg', 'pdf', 'vega', 'vega-lite'] |
|
|
|
Parameters |
|
---------- |
|
spec : dict |
|
a dictionary representing a vega-lite plot spec |
|
format : string {'html', 'json', 'png', 'svg', 'pdf', 'vega', 'vega-lite'} |
|
the file format to be saved. |
|
mode : string {'vega', 'vega-lite'} |
|
The rendering mode. |
|
vega_version : string |
|
The version of vega.js to use |
|
vegaembed_version : string |
|
The version of vegaembed.js to use |
|
vegalite_version : string |
|
The version of vegalite.js to use. Only required if mode=='vega-lite' |
|
**kwargs : |
|
Additional arguments will be passed to the generating function |
|
|
|
Returns |
|
------- |
|
output : dict |
|
a mime-bundle representing the image |
|
|
|
Note |
|
---- |
|
The png, svg, pdf, and vega outputs require the altair_saver package |
|
to be installed. |
|
""" |
|
if mode not in ["vega", "vega-lite"]: |
|
raise ValueError("mode must be either 'vega' or 'vega-lite'") |
|
|
|
if mode == "vega" and format == "vega": |
|
if vega_version is None: |
|
raise ValueError("Must specify vega_version") |
|
return {"application/vnd.vega.v{}+json".format(vega_version[0]): spec} |
|
if format in ["png", "svg", "pdf", "vega"]: |
|
try: |
|
import altair_saver |
|
except ImportError: |
|
raise ValueError( |
|
"Saving charts in {fmt!r} format requires the altair_saver package: " |
|
"see http://github.com/altair-viz/altair_saver/".format(fmt=format) |
|
) |
|
return altair_saver.render(spec, format, mode=mode, **kwargs) |
|
if format == "html": |
|
html = spec_to_html( |
|
spec, |
|
mode=mode, |
|
vega_version=vega_version, |
|
vegaembed_version=vegaembed_version, |
|
vegalite_version=vegalite_version, |
|
**kwargs, |
|
) |
|
return {"text/html": html} |
|
if format == "vega-lite": |
|
assert mode == "vega-lite" |
|
if mode == "vega": |
|
raise ValueError("Cannot convert a vega spec to vegalite") |
|
if vegalite_version is None: |
|
raise ValueError("Must specify vegalite_version") |
|
return {"application/vnd.vegalite.v{}+json".format(vegalite_version[0]): spec} |
|
if format == "json": |
|
return {"application/json": spec} |
|
raise ValueError( |
|
"format must be one of " |
|
"['html', 'json', 'png', 'svg', 'pdf', 'vega', 'vega-lite']" |
|
) |
|
|