Source code for evalys.visu.details

# coding: utf-8

import matplotlib.gridspec

from . import core
from . import gantt
from . import lifecycle
from . import series
from .. import utils


[docs]class DetailsLayout(core.EvalysLayout): """ Layout in 4 horizontal stripes. This layout is a support to combine various already-existing visualizations. """ def __init__(self, *, wtitle='Detailed Figure'): super().__init__(wtitle=wtitle) gs = matplotlib.gridspec.GridSpec(nrows=4, ncols=1) visualizations = 'utilization', 'queue', 'lifecycle', 'gantt' for idx, visu in enumerate(visualizations): self.sps[visu] = gs[idx, :]
[docs] def show(self): # hacky way to enforce sharing of axes axes = self.fig.get_axes() axes[0].get_shared_x_axes().join(*axes) super().show()
[docs]def plot_details(jobset, *, title='Workload overview', **kwargs): """ Helper function to create a detailed overview of a workload. :param jobset: The jobset under study. :type jobset: `JobSet` :param title: The title of the window. :type title: str :param \**kwargs: The keyword arguments to be fed to the constructors of the visualization classes. """ visualizations = { 'gantt': gantt.GanttVisualization, 'lifecycle': lifecycle.LifecycleVisualization, 'queue': series.QueueSeriesVisualization, 'utilization': series.UtilizationSeriesVisualization, } layout = DetailsLayout(wtitle=title) for spskey, visu_cls in visualizations.items(): plot = layout.inject(visu_cls, spskey=spskey) utils.bulksetattr(plot, **kwargs) plot.build(jobset) layout.show()