Revision: 7185
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7185&view=rev
Author: jdh2358
Date: 2009-06-06 13:26:49 +0000 (Sat, 06 Jun 2009)
Log Message:
-----------
added Neil's auto minor tick patch; sf patch #2789713
Modified Paths:
--------------
trunk/matplotlib/lib/matplotlib/axes.py
trunk/matplotlib/lib/matplotlib/pyplot.py
trunk/matplotlib/lib/matplotlib/ticker.py
Modified: trunk/matplotlib/lib/matplotlib/axes.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/axes.py 2009-06-06 11:36:10 UTC (rev
7184)
+++ trunk/matplotlib/lib/matplotlib/axes.py 2009-06-06 13:26:49 UTC (rev
7185)
@@ -7790,7 +7790,19 @@
return _bbox
+ def minorticks_on(self):
+ 'Add autoscaling minor ticks to the axes.'
+ for ax in (self.xaxis, self.yaxis):
+ if ax.get_scale() == 'log':
+ s = ax._scale
+ ax.set_minor_locator(mticker.LogLocator(s.base, s.subs))
+ else:
+ ax.set_minor_locator(mticker.AutoMinorLocator())
+ def minorticks_off(self):
+ 'Remove minor ticks from the axes.'
+ self.xaxis.set_minor_locator(mticker.NullLocator())
+ self.yaxis.set_minor_locator(mticker.NullLocator())
class SubplotBase:
Modified: trunk/matplotlib/lib/matplotlib/pyplot.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/pyplot.py 2009-06-06 11:36:10 UTC (rev
7184)
+++ trunk/matplotlib/lib/matplotlib/pyplot.py 2009-06-06 13:26:49 UTC (rev
7185)
@@ -1047,8 +1047,23 @@
silent_list('Text yticklabel', labels)
)
+def minorticks_on():
+ """
+ Display minor ticks on the current plot.
+ Displaying minor ticks reduces performance; turn them off using
+ minorticks_off() if drawing speed is a problem.
+ """
+ gca().minorticks_on()
+ draw_if_interactive()
+def minorticks_off():
+ """
+ Remove minor ticks from the current plot.
+ """
+ gca().minorticks_off()
+ draw_if_interactive()
+
def rgrids(*args, **kwargs):
"""
Set/Get the radial locations of the gridlines and ticklabels on a
Modified: trunk/matplotlib/lib/matplotlib/ticker.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/ticker.py 2009-06-06 11:36:10 UTC (rev
7184)
+++ trunk/matplotlib/lib/matplotlib/ticker.py 2009-06-06 13:26:49 UTC (rev
7185)
@@ -1182,6 +1182,40 @@
def __init__(self):
MaxNLocator.__init__(self, nbins=9, steps=[1, 2, 5, 10])
+class AutoMinorLocator(Locator):
+ """
+ Dynamically find minor tick positions based on the positions of
+ major ticks. Assumes the scale is linear and major ticks are
+ evenly spaced.
+ """
+ def __call__(self):
+ 'Return the locations of the ticks'
+ majorlocs = self.axis.get_majorticklocs()
+ try:
+ majorstep = majorlocs[1] - majorlocs[0]
+ except IndexError:
+ raise ValueError('Need at least two major ticks to find minor '
+ 'tick locations')
+ # see whether major step should be divided by 5, 4 or 2. This
+ # should cover most cases.
+ temp = float(('%e' % majorstep).split('e')[0])
+ if temp % 5 < 1e-10:
+ minorstep = majorstep / 5.
+ elif temp % 2 < 1e-10:
+ minorstep = majorstep / 4.
+ else:
+ minorstep = majorstep / 2.
+
+ tmin = majorlocs[0] - majorstep
+ tmax = majorlocs[-1] + majorstep
+ locs = np.arange(tmin, tmax, minorstep)
+ vmin, vmax = self.axis.get_view_interval()
+ if vmin > vmax:
+ vmin,vmax = vmax,vmin
+
+ return locs[(vmin < locs) & (locs < vmax)]
+
+
class OldAutoLocator(Locator):
"""
On autoscale this class picks the best MultipleLocator to set the
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
OpenSolaris 2009.06 is a cutting edge operating system for enterprises
looking to deploy the next generation of Solaris that includes the latest
innovations from Sun and the OpenSource community. Download a copy and
enjoy capabilities such as Networking, Storage and Virtualization.
Go to: http://p.sf.net/sfu/opensolaris-get
_______________________________________________
Matplotlib-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-checkins