Source code for viewclust_vis.viol_plot

from datetime import datetime
import plotly.graph_objects as go


[docs]def viol_plot(d_from, cores_queued, cores_running, target, d_to='', fig_out=''): """Violin distribution usage plot. Parameters ------- d_from: date str Beginning of the query period, e.g. '2019-04-01T00:00:00' cores_queued: array_like of DataFrame Series displaying queued resources at a particular time. See jobUse. cores_running: array_like of DataFrame Series displaying running resources at a particular time. See jobUse. target: int Target information for a given usage. Can be user specific or system-wide. d_to: date str, optional End of the query period, e.g. '2020-01-01T00:00:00'. If empty, defaults to now. fig_out: str, optional Writes the generated figure to file as the given name. If empty, skips writing. Defaults to empty. See Also ------- jobUse: Generates the input frames for this function. """ # d_to boilerplate if d_to == '': now = datetime.now() d_to = now.strftime('%Y-%m-%dT%H:%M:%S') fig = go.Figure() fig.add_trace(go.Violin(y=cores_running.loc[d_from:d_to].divide( int(target)) * 100, points='all', jitter=0.05, side='positive', pointpos=-.1, line_color='rgba(80,80,220, .8)', name='Total CPUs running')) fig.add_trace(go.Violin(y=cores_queued.loc[d_from:d_to].divide( int(target)) * 100, points='all', jitter=0.05, side='negative', pointpos=.1, line_color='rgba(220,80,80, .8)', name='RAC CPUs running')) # update characteristics shared by all traces fig.update_traces(meanline_visible=True, box_visible=True, opacity=0.6, scalemode='count') fig.update_layout( title_text="CPU utilization: ", violingap=0, violingroupgap=0, violinmode='overlay', yaxis_title='Percent CPU capacity', xaxis_title='Time bin count', showlegend=False) if fig_out != '': fig.write_html(fig_out)