def parametric_function(fx='<STR_LIT>', fy='<STR_LIT>', tmin=-<NUM_LIT:1>, tmax=<NUM_LIT:1>, steps=<NUM_LIT:200>, p='<STR_LIT:t>', g=None, erange=False, **kwargs):
if not g: g = {}<EOL>for k in list(globals().keys()):<EOL><INDENT>if k not in g: g[k] = globals()[k]<EOL><DEDENT>if erange: r = _fun.erange(tmin, tmax, steps)<EOL>else:      r = _n.linspace(tmin, tmax, steps)<EOL>if not type(fy) in [type([]), type(())]: fy = [fy]<EOL>if not type(fx) in [type([]), type(())]: fx = [fx]<EOL>xdatas = []<EOL>ydatas = []<EOL>labels = []<EOL>for fs in fx:<EOL><INDENT>if type(fs) == str:<EOL><INDENT>a = eval('<STR_LIT>' + p + '<STR_LIT>' + fs, g)<EOL>a.__name__ = fs<EOL><DEDENT>else:<EOL><INDENT>a = fs<EOL><DEDENT>x = []<EOL>for z in r: x.append(a(z))<EOL>xdatas.append(x)<EOL>labels.append(a.__name__)<EOL><DEDENT>for n in range(len(fy)):<EOL><INDENT>fs = fy[n]<EOL>if type(fs) == str:<EOL><INDENT>a = eval('<STR_LIT>' + p + '<STR_LIT>' + fs, g)<EOL>a.__name__ = fs<EOL><DEDENT>else:<EOL><INDENT>a = fs<EOL><DEDENT>y = []<EOL>for z in r: y.append(a(z))<EOL>ydatas.append(y)<EOL>labels[n] = labels[n]+'<STR_LIT:U+002CU+0020>'+a.__name__<EOL><DEDENT>xy_data(xdatas, ydatas, label=labels, **kwargs)<EOL>
Plots the parametric function over the specified range

Parameters
----------
fx='sin(t)', fy='cos(t)'              
    Functions or (matching) lists of functions to plot; 
    can be string functions or python functions taking one argument
tmin=-1, tmax=1, steps=200   
    Range over which to plot, and how many points to plot
p='t'
    If using strings for functions, p is the parameter name
g=None
    Optional dictionary of extra globals. Try g=globals()!
erange=False
    Use exponential spacing of the t data?

See spinmob.plot.xy.data() for additional optional keyword arguments.