Source code for micom.viz.core
"""Core objects for visualization."""
from micom.logger import logger
from os import path
from jinja2 import Environment, PackageLoader, select_autoescape
import webbrowser
[docs]env = Environment(
loader=PackageLoader("micom", "data/templates"),
autoescape=select_autoescape(["html"]),
)
[docs]class Visualization(object):
"""A visualization object.
Attributes
----------
filename : str
The filename of trhe saved visualization.
data : dict
The data used to create the Visualization.
template : jinja2.Template
The jinja template used to render the visualization.
"""
def __init__(self, filename, data, template):
self.filename = filename
self.data = data
self.template = env.get_template(template)
[docs] def view(self):
"""Open the visualization in a browser.
Parameters
----------
None.
Returns
-------
nothing
"""
webbrowser.open("file://%s" % path.realpath(self.filename), new=2)
[docs] def save(self, **kwargs):
"""Render and and save the visualization."""
out = self.filename
files = {k: d.to_csv(index=False) for k, d in self.data.items()}
logger.info("Writing visualization to %s." % out)
self.template.stream(files=files, **kwargs).dump(out)