From: <jd...@us...> - 2009-03-24 01:49:26
|
Revision: 7003 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7003&view=rev Author: jdh2358 Date: 2009-03-24 01:49:18 +0000 (Tue, 24 Mar 2009) Log Message: ----------- added prune option to maxnlocataor; updated finance demo Modified Paths: -------------- trunk/matplotlib/examples/pylab_examples/finance_work2.py trunk/matplotlib/lib/matplotlib/ticker.py Modified: trunk/matplotlib/examples/pylab_examples/finance_work2.py =================================================================== --- trunk/matplotlib/examples/pylab_examples/finance_work2.py 2009-03-23 19:18:35 UTC (rev 7002) +++ trunk/matplotlib/examples/pylab_examples/finance_work2.py 2009-03-24 01:49:18 UTC (rev 7003) @@ -201,7 +201,7 @@ ax3.text(0.025, 0.95, 'MACD (%d, %d, %d)'%(nfast, nslow, nema), va='top', transform=ax3.transAxes, fontsize=textsize) -ax3.set_yticks([]) +#ax3.set_yticks([]) # turn off upper axis tick labels, rotate the lower ones, etc for ax in ax1, ax2, ax2t, ax3: if ax!=ax3: @@ -215,15 +215,11 @@ ax.fmt_xdata = mdates.DateFormatter('%Y-%m-%d') -class PriceFormatter(mticker.FormatStrFormatter): - 'suppress the lowest tick label to prevent overlap' - def __call__(self, x, pos=None): - if pos==0: - return '' - else: - return mticker.FormatStrFormatter.__call__(self, x, pos=None) -ax2.yaxis.set_major_formatter(PriceFormatter('%d')) +# at most 5 ticks, pruning the upper and lower so they don't overlap +# with other ticks +ax2.yaxis.set_major_locator(mticker.MaxNLocator(5, prune='both')) +ax3.yaxis.set_major_locator(mticker.MaxNLocator(5, prune='both')) plt.show() Modified: trunk/matplotlib/lib/matplotlib/ticker.py =================================================================== --- trunk/matplotlib/lib/matplotlib/ticker.py 2009-03-23 19:18:35 UTC (rev 7002) +++ trunk/matplotlib/lib/matplotlib/ticker.py 2009-03-24 01:49:18 UTC (rev 7003) @@ -913,13 +913,27 @@ """ def __init__(self, nbins = 10, steps = None, - trim = True, - integer=False, - symmetric=False): + trim = True, + integer=False, + symmetric=False, + prune=None): + """ + Keyword args: + *prune* + Remove edge ticks -- useful for stacked or ganed plots + where the upper tick of one axes overlaps with the lower + tick of the axes above it. one of 'lower' | 'upper'| + 'both' | None. If prune=='lower', the smallest tick will + be removed. If prune=='upper', the largest tick will be + removed. If prune=='both', the largest and smallest ticks + will be removed. If prune==None, no ticks will be removed + + """ self._nbins = int(nbins) self._trim = trim self._integer = integer self._symmetric = symmetric + self._prune = prune if steps is None: self._steps = [1, 1.5, 2, 2.5, 3, 4, 5, 6, 8, 10] else: @@ -957,7 +971,16 @@ def __call__(self): vmin, vmax = self.axis.get_view_interval() vmin, vmax = mtransforms.nonsingular(vmin, vmax, expander = 0.05) - return self.bin_boundaries(vmin, vmax) + locs = self.bin_boundaries(vmin, vmax) + #print 'locs=', locs + prune = self._prune + if prune=='lower': + locs = locs[1:] + elif prune=='upper': + locs = locs[:-1] + elif prune=='both': + locs = locs[1:-1] + return locs def view_limits(self, dmin, dmax): if self._symmetric: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |