Added tallibing

master
per.andreas.brodtkorb 13 years ago
parent dd324acedf
commit d615424736

@ -9,9 +9,12 @@ from __future__ import division
import warnings import warnings
import numpy as np import numpy as np
from wafo.plotbackend import plotbackend from wafo.plotbackend import plotbackend
from matplotlib import mlab
__all__ = ['cltext', 'test_docstrings'] __all__ = ['cltext', 'test_docstrings']
_TALLIBING_TAG = 'TALLIBING'
def cltext(levels, percent=False, n=4, xs=0.036, ys=0.94, zs=0): def cltext(levels, percent=False, n=4, xs=0.036, ys=0.94, zs=0):
''' '''
Places contour level text in the current window Places contour level text in the current window
@ -93,9 +96,9 @@ def cltext(levels, percent=False, n=4, xs=0.036, ys=0.94, zs=0):
else: else:
titletxt = 'Level curves at:'; titletxt = 'Level curves at:';
format = '%0.' + ('%d' % n) + 'g\n' format_ = '%0.' + ('%d' % n) + 'g\n'
cltxt = ''.join([format % level for level in clevels.tolist()]) cltxt = ''.join([format_ % level for level in clevels.tolist()])
titleProp = dict(gid=_CLTEXT_TAG, horizontalalignment='left', titleProp = dict(gid=_CLTEXT_TAG, horizontalalignment='left',
verticalalignment='center', fontweight='bold', axes=cax) # verticalalignment='center', fontweight='bold', axes=cax) #
@ -109,6 +112,71 @@ def cltext(levels, percent=False, n=4, xs=0.036, ys=0.94, zs=0):
return ha1, ha2 return ha1, ha2
def tallibing(x, y, n, **kwds):
'''
TALLIBING Display numbers on field-plot
CALL h=tallibing(x,y,n,size,color)
x,y = position matrices
n = the corresponding matrix of the values to be written
(non-integers are rounded)
size = font size (optional) (default=8)
color = color of text (optional) (default='white')
h = column-vector of handles to TEXT objects
TALLIBING writes the numbers in a matrix as text at the positions
given by the x and y coordinate matrices.
When plotting binned results, the number of datapoints in each
bin can be written on the bins in the plot.
EXAMPLE:
[x,y,z]= wafo.demos.peaks();
epcolor(x,y,z);
tallibing(x,y,z);
% pcolor(x,y,z); shading interp;
See also TEXT TALLIBING3
'''
x, y, n = np.atleast_1d(x, y, n)
if mlab.isvector(x) or mlab.isvector(y):
x, y = np.meshgrid(x,y)
cax = plotbackend.gca()
x = x.ravel()
y = y.ravel()
n = n.ravel()
n = np.round(n)
def matchfun(x):
if hasattr(x, 'get_gid'):
return x.get_gid() == _TALLIBING_TAG
return False
cf = plotbackend.gcf() # get current figure
h_cltxts = plotbackend.findobj(cf, matchfun);
if len(h_cltxts):
for i in h_cltxts:
try:
cax.texts.remove(i)
except:
warnings.warn('Tried to delete a non-existing TALLIBING-text')
try:
cf.texts.remove(i)
except:
warnings.warn('Tried to delete a non-existing TALLIBING-text')
txtProp = dict(gid=_TALLIBING_TAG, size=8, color='w', horizontalalignment='center',
verticalalignment='center', fontweight='demi', axes=cax)
txtProp.update(**kwds)
h = []
for xi,yi,ni in zip(x,y,n):
if ni:
h.append(plotbackend.text(xi, yi, str(ni), **txtProp))
return h
def test_docstrings(): def test_docstrings():
import doctest import doctest
doctest.testmod() doctest.testmod()

Loading…
Cancel
Save