Spaces:
Running
Running
File size: 1,435 Bytes
ba2f5d6 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
"""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")
|