mirror of
https://github.com/aykhans/AzSuicideDataVisualization.git
synced 2025-04-22 10:28:02 +00:00
147 lines
4.0 KiB
Python
147 lines
4.0 KiB
Python
import os
|
|
|
|
from ...utils.mimebundle import spec_to_mimebundle
|
|
from ..display import Displayable
|
|
from ..display import default_renderer_base
|
|
from ..display import json_renderer_base
|
|
from ..display import RendererRegistry
|
|
from ..display import HTMLRenderer
|
|
|
|
from .schema import SCHEMA_VERSION
|
|
|
|
VEGALITE_VERSION = SCHEMA_VERSION.lstrip("v")
|
|
VEGA_VERSION = "5"
|
|
VEGAEMBED_VERSION = "5"
|
|
|
|
|
|
# ==============================================================================
|
|
# VegaLite v3 renderer logic
|
|
# ==============================================================================
|
|
|
|
|
|
# The MIME type for Vega-Lite 3.x releases.
|
|
VEGALITE_MIME_TYPE = "application/vnd.vegalite.v3+json" # type: str
|
|
|
|
# The entry point group that can be used by other packages to declare other
|
|
# renderers that will be auto-detected. Explicit registration is also
|
|
# allowed by the PluginRegistery API.
|
|
ENTRY_POINT_GROUP = "altair.vegalite.v3.renderer" # type: str
|
|
|
|
# The display message when rendering fails
|
|
DEFAULT_DISPLAY = """\
|
|
<VegaLite 3 object>
|
|
|
|
If you see this message, it means the renderer has not been properly enabled
|
|
for the frontend that you are using. For more information, see
|
|
https://altair-viz.github.io/user_guide/troubleshooting.html
|
|
"""
|
|
|
|
renderers = RendererRegistry(entry_point_group=ENTRY_POINT_GROUP)
|
|
|
|
here = os.path.dirname(os.path.realpath(__file__))
|
|
|
|
|
|
def default_renderer(spec, **metadata):
|
|
return default_renderer_base(spec, VEGALITE_MIME_TYPE, DEFAULT_DISPLAY, **metadata)
|
|
|
|
|
|
def json_renderer(spec, **metadata):
|
|
return json_renderer_base(spec, DEFAULT_DISPLAY, **metadata)
|
|
|
|
|
|
def png_renderer(spec, **metadata):
|
|
return spec_to_mimebundle(
|
|
spec,
|
|
format="png",
|
|
mode="vega-lite",
|
|
vega_version=VEGA_VERSION,
|
|
vegaembed_version=VEGAEMBED_VERSION,
|
|
vegalite_version=VEGALITE_VERSION,
|
|
**metadata,
|
|
)
|
|
|
|
|
|
def svg_renderer(spec, **metadata):
|
|
return spec_to_mimebundle(
|
|
spec,
|
|
format="svg",
|
|
mode="vega-lite",
|
|
vega_version=VEGA_VERSION,
|
|
vegaembed_version=VEGAEMBED_VERSION,
|
|
vegalite_version=VEGALITE_VERSION,
|
|
**metadata,
|
|
)
|
|
|
|
|
|
colab_renderer = HTMLRenderer(
|
|
mode="vega-lite",
|
|
fullhtml=True,
|
|
requirejs=False,
|
|
output_div="altair-viz",
|
|
vega_version=VEGA_VERSION,
|
|
vegaembed_version=VEGAEMBED_VERSION,
|
|
vegalite_version=VEGALITE_VERSION,
|
|
)
|
|
|
|
zeppelin_renderer = HTMLRenderer(
|
|
mode="vega-lite",
|
|
fullhtml=True,
|
|
requirejs=False,
|
|
vega_version=VEGA_VERSION,
|
|
vegaembed_version=VEGAEMBED_VERSION,
|
|
vegalite_version=VEGALITE_VERSION,
|
|
)
|
|
|
|
kaggle_renderer = HTMLRenderer(
|
|
mode="vega-lite",
|
|
fullhtml=False,
|
|
requirejs=True,
|
|
vega_version=VEGA_VERSION,
|
|
vegaembed_version=VEGAEMBED_VERSION,
|
|
vegalite_version=VEGALITE_VERSION,
|
|
)
|
|
|
|
html_renderer = HTMLRenderer(
|
|
mode="vega-lite",
|
|
template="universal",
|
|
vega_version=VEGA_VERSION,
|
|
vegaembed_version=VEGAEMBED_VERSION,
|
|
vegalite_version=VEGALITE_VERSION,
|
|
)
|
|
|
|
renderers.register("default", default_renderer)
|
|
renderers.register("html", html_renderer)
|
|
renderers.register("jupyterlab", default_renderer)
|
|
renderers.register("nteract", default_renderer)
|
|
renderers.register("colab", colab_renderer)
|
|
renderers.register("kaggle", kaggle_renderer)
|
|
renderers.register("json", json_renderer)
|
|
renderers.register("png", png_renderer)
|
|
renderers.register("svg", svg_renderer)
|
|
renderers.register("zeppelin", zeppelin_renderer)
|
|
renderers.enable("default")
|
|
|
|
|
|
class VegaLite(Displayable):
|
|
"""An IPython/Jupyter display class for rendering VegaLite 3."""
|
|
|
|
renderers = renderers
|
|
schema_path = (__name__, "schema/vega-lite-schema.json")
|
|
|
|
|
|
def vegalite(spec, validate=True):
|
|
"""Render and optionally validate a VegaLite 3 spec.
|
|
|
|
This will use the currently enabled renderer to render the spec.
|
|
|
|
Parameters
|
|
==========
|
|
spec: dict
|
|
A fully compliant VegaLite 3 spec, with the data portion fully processed.
|
|
validate: bool
|
|
Should the spec be validated against the VegaLite 3 schema?
|
|
"""
|
|
from IPython.display import display
|
|
|
|
display(VegaLite(spec, validate=validate))
|