Source code for pytplot.timebar

# Copyright 2018 Regents of the University of Colorado. All Rights Reserved.
# Released under the MIT license.
# This software was developed at the University of Colorado's Laboratory for Atmospheric and Space Physics.
# Verify current version before use at: https://github.com/MAVENSDC/PyTplot

from . import tplot_utilities
from bokeh.models import Span
import pytplot

[docs]def timebar(t, varname = None, databar = False, delete = False, color = 'black', thick = 1, dash = False): """ This function will add a vertical bar to all time series plots. This is useful if you want to bring attention to a specific time. Parameters: t : flt/list The time in seconds since Jan 01 1970 to place the vertical bar. If a list of numbers are supplied, multiple bars will be created. If "databar" is set, then "t" becomes the point on the y axis to place a horizontal bar. varname : str/list, optional The variable(s) to add the vertical bar to. If not set, the default is to add it to all current plots. databar : bool, optional This will turn the timebar into a horizontal data bar. If this is set True, then variable "t" becomes the point on the y axis to place a horizontal bar. delete : bool, optional If set to True, at lease one varname must be supplied. The timebar at point "t" for variable "varname" will be removed. color : str The color of the bar thick : int The thickness of the bar dash : bool If set to True, the bar is dashed rather than solid Returns: None Examples: >>> # Place a green time bar at 2017-07-17 00:00:00 >>> import pytplot >>> pytplot.timebar(1500249600, color='green') >>> # Place a dashed data bar at 5500 on the y axis >>> pytplot.timebar(5500, dashed=True, databar=True) >>> Place 3 magenta time bars of thickness 5 at [2015-12-26 05:20:01, 2015-12-26 08:06:40, 2015-12-26 08:53:19] for variable 'sgx' plot >>> pytplot.timebar([1451107201,1451117200,1451119999],'sgx',color='m',thick=5) """ # make sure t entered is a list if not isinstance(t, list): t = [t] # if entries in list not numerical, run str_to_int if not isinstance(t[0], (int, float, complex)): t1 = [] for time in t: t1.append(tplot_utilities.str_to_int(time)) t = t1 dim = 'height' if databar is True: dim = 'width' dash_pattern = 'solid' if dash is True: dash_pattern = 'dashed' if delete is True: tplot_utilities.timebar_delete(t, varname, dim) return #if no varname specified, add timebars to every plot if varname is None: num_bars = len(t) for i in range(num_bars): tbar = {} tbar['location'] = t[i] tbar['dimension'] = dim tbar['line_color'] = pytplot.tplot_utilities.rgb_color(color)[0] tbar['line_width'] = thick tbar['line_dash'] = dash_pattern for name in pytplot.data_quants: temp_data_quants = pytplot.data_quants[name] if isinstance(temp_data_quants, dict): # non-record varying variable continue temp_data_quants.attrs['plot_options']['time_bar'].append(tbar) #if varname specified else: if not isinstance(varname, list): varname = [varname] for j in varname: if j not in pytplot.data_quants.keys(): print(str(j) + "is currently not in pytplot") else: num_bars = len(t) for i in range(num_bars): tbar = {} tbar['location'] = t[i] tbar['dimension'] = dim tbar['line_color'] = pytplot.tplot_utilities.rgb_color(color)[0] tbar['line_width'] = thick tbar['line_dash'] = dash_pattern temp_data_quants = pytplot.data_quants[j] if isinstance(temp_data_quants, dict): # non-record varying variable continue temp_data_quants.attrs['plot_options']['time_bar'].append(tbar) return