|
From: <lee...@us...> - 2009-05-12 19:35:36
|
Revision: 7099
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7099&view=rev
Author: leejjoon
Date: 2009-05-12 19:35:25 +0000 (Tue, 12 May 2009)
Log Message:
-----------
fixed a few bugs introduced in r7098(aspect for log-log plot).
Modified Paths:
--------------
trunk/matplotlib/lib/matplotlib/axes.py
Modified: trunk/matplotlib/lib/matplotlib/axes.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/axes.py 2009-05-12 04:12:07 UTC (rev 7098)
+++ trunk/matplotlib/lib/matplotlib/axes.py 2009-05-12 19:35:25 UTC (rev 7099)
@@ -524,6 +524,8 @@
self.set_label(label)
self.set_figure(fig)
+ self.set_axes_locator(kwargs.get("axes_locator", None))
+
# this call may differ for non-sep axes, eg polar
self._init_axis()
@@ -548,7 +550,6 @@
self.set_navigate(True)
self.set_navigate_mode(None)
- self._axes_locator = None
if xscale:
self.set_xscale(xscale)
@@ -1085,7 +1086,7 @@
raise ValueError('argument must be among %s' %
', '.join(mtransforms.BBox.coefs.keys()))
- def get_data_ratio(self, mode="linear"):
+ def get_data_ratio(self):
"""
Returns the aspect ratio of the raw data.
@@ -1095,16 +1096,26 @@
xmin,xmax = self.get_xbound()
ymin,ymax = self.get_ybound()
- if mode == "log":
- xsize = max(math.fabs(math.log10(xmax)-math.log10(xmin)), 1e-30)
- ysize = max(math.fabs(math.log10(ymax)-math.log10(ymin)), 1e-30)
- else:
- xsize = max(math.fabs(xmax-xmin), 1e-30)
- ysize = max(math.fabs(ymax-ymin), 1e-30)
+ xsize = max(math.fabs(xmax-xmin), 1e-30)
+ ysize = max(math.fabs(ymax-ymin), 1e-30)
return ysize/xsize
+ def get_data_ratio_log(self):
+ """
+ Returns the aspect ratio of the raw data in log scale.
+ Will be used when both axis scales are in log.
+ """
+ xmin,xmax = self.get_xbound()
+ ymin,ymax = self.get_ybound()
+
+ xsize = max(math.fabs(math.log10(xmax)-math.log10(xmin)), 1e-30)
+ ysize = max(math.fabs(math.log10(ymax)-math.log10(ymin)), 1e-30)
+
+ return ysize/xsize
+
+
def apply_aspect(self, position=None):
'''
Use :meth:`_aspect` and :meth:`_adjustable` to modify the
@@ -1121,11 +1132,14 @@
aspect_scale_mode = "linear"
elif xscale == "log" and yscale == "log":
aspect_scale_mode = "log"
- else:
+ elif (xscale == "linear" and yscale == "log") or \
+ (xscale == "log" and yscale == "linear"):
warnings.warn(
'aspect is not supported for Axes with xscale=%s, yscale=%s' \
% (xscale, yscale))
aspect = "auto"
+ else: # some custom projections have their own scales.
+ pass
if aspect == 'auto':
self.set_position( position , which='active')
@@ -1147,7 +1161,10 @@
figW,figH = self.get_figure().get_size_inches()
fig_aspect = figH/figW
if self._adjustable == 'box':
- box_aspect = A * self.get_data_ratio(mode=aspect_scale_mode)
+ if aspect_scale_mode == "log":
+ box_aspect = A * self.get_data_ratio_log()
+ else:
+ box_aspect = A * self.get_data_ratio()
pb = position.frozen()
pb1 = pb.shrunk_to_aspect(box_aspect, pb, fig_aspect)
self.set_position(pb1.anchored(self.get_anchor(), pb), 'active')
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|