Spaces:
Running
Running
"""Tools for enabling and registering chart themes""" | |
from ...utils.theme import ThemeRegistry | |
VEGA_THEMES = ["ggplot2", "quartz", "vox", "fivethirtyeight", "dark", "latimes"] | |
class VegaTheme(object): | |
"""Implementation of a builtin vega theme.""" | |
def __init__(self, theme): | |
self.theme = theme | |
def __call__(self): | |
return { | |
"usermeta": {"embedOptions": {"theme": self.theme}}, | |
"config": { | |
"view": {"width": 400, "height": 300}, | |
"mark": {"tooltip": None}, | |
}, | |
} | |
def __repr__(self): | |
return "VegaTheme({!r})".format(self.theme) | |
# 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.theme" # type: str | |
themes = ThemeRegistry(entry_point_group=ENTRY_POINT_GROUP) | |
themes.register( | |
"default", | |
lambda: { | |
"config": {"view": {"width": 400, "height": 300}, "mark": {"tooltip": None}} | |
}, | |
) | |
themes.register( | |
"opaque", | |
lambda: { | |
"config": { | |
"background": "white", | |
"view": {"width": 400, "height": 300}, | |
"mark": {"tooltip": None}, | |
} | |
}, | |
) | |
themes.register("none", lambda: {}) | |
for theme in VEGA_THEMES: | |
themes.register(theme, VegaTheme(theme)) | |
themes.enable("default") | |