From: <he...@us...> - 2009-12-20 08:03:50
|
Revision: 8041 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8041&view=rev Author: heeres Date: 2009-12-20 08:03:40 +0000 (Sun, 20 Dec 2009) Log Message: ----------- mplot3d: fix axes juggle issue, fix ticks on end of axes range Modified Paths: -------------- trunk/matplotlib/examples/mplot3d/polys3d_demo.py trunk/matplotlib/examples/mplot3d/surface3d_demo3.py trunk/matplotlib/lib/mpl_toolkits/mplot3d/art3d.py trunk/matplotlib/lib/mpl_toolkits/mplot3d/axes3d.py trunk/matplotlib/lib/mpl_toolkits/mplot3d/axis3d.py Modified: trunk/matplotlib/examples/mplot3d/polys3d_demo.py =================================================================== --- trunk/matplotlib/examples/mplot3d/polys3d_demo.py 2009-12-18 22:25:35 UTC (rev 8040) +++ trunk/matplotlib/examples/mplot3d/polys3d_demo.py 2009-12-20 08:03:40 UTC (rev 8041) @@ -22,8 +22,11 @@ poly.set_alpha(0.7) ax.add_collection3d(poly, zs=zs, zdir='y') +ax.set_xlabel('X') ax.set_xlim3d(0, 10) +ax.set_ylabel('Y') ax.set_ylim3d(-1, 4) +ax.set_zlabel('Z') ax.set_zlim3d(0, 1) plt.show() Modified: trunk/matplotlib/examples/mplot3d/surface3d_demo3.py =================================================================== --- trunk/matplotlib/examples/mplot3d/surface3d_demo3.py 2009-12-18 22:25:35 UTC (rev 8040) +++ trunk/matplotlib/examples/mplot3d/surface3d_demo3.py 2009-12-20 08:03:40 UTC (rev 8041) @@ -23,8 +23,8 @@ surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, facecolors=colors, linewidth=0, antialiased=False) -ax.set_zlim3d(-1.01, 1.01) -ax.w_zaxis.set_major_locator(LinearLocator(10)) +ax.set_zlim3d(-1, 1) +ax.w_zaxis.set_major_locator(LinearLocator(6)) ax.w_zaxis.set_major_formatter(FormatStrFormatter('%.03f')) plt.show() Modified: trunk/matplotlib/lib/mpl_toolkits/mplot3d/art3d.py =================================================================== --- trunk/matplotlib/lib/mpl_toolkits/mplot3d/art3d.py 2009-12-18 22:25:35 UTC (rev 8040) +++ trunk/matplotlib/lib/mpl_toolkits/mplot3d/art3d.py 2009-12-20 08:03:40 UTC (rev 8041) @@ -434,9 +434,26 @@ def juggle_axes(xs, ys, zs, zdir): """ - Reorder coordinates so that zdir + Reorder coordinates so that 2D xs, ys can be plotted in the plane + orthogonal to zdir. zdir is normally x, y or z. However, if zdir + starts with a '-' it is interpreted as a compensation for rotate_axes. """ if zdir == 'x': + return zs, xs, ys + elif zdir == 'y': + return xs, zs, ys + elif zdir[0] == '-': + return rotate_axes(xs, ys, zs, zdir) + else: + return xs, ys, zs + +def rotate_axes(xs, ys, zs, zdir): + """ + Reorder coordinates so that the axes are rotated with zdir along + the original z axis. Prepending the axis with a '-' does the + inverse transform, so zdir can be x, -x, y, -y, z or -z + """ + if zdir == 'x': return ys, zs, xs elif zdir == '-x': return zs, xs, ys Modified: trunk/matplotlib/lib/mpl_toolkits/mplot3d/axes3d.py =================================================================== --- trunk/matplotlib/lib/mpl_toolkits/mplot3d/axes3d.py 2009-12-18 22:25:35 UTC (rev 8040) +++ trunk/matplotlib/lib/mpl_toolkits/mplot3d/axes3d.py 2009-12-20 08:03:40 UTC (rev 8041) @@ -857,7 +857,7 @@ had_data = self.has_data() - jX, jY, jZ = art3d.juggle_axes(X, Y, Z, zdir) + jX, jY, jZ = art3d.rotate_axes(X, Y, Z, zdir) cset = Axes.contour(self, jX, jY, jZ, **kwargs) zdir = '-' + zdir Modified: trunk/matplotlib/lib/mpl_toolkits/mplot3d/axis3d.py =================================================================== --- trunk/matplotlib/lib/mpl_toolkits/mplot3d/axis3d.py 2009-12-18 22:25:35 UTC (rev 8040) +++ trunk/matplotlib/lib/mpl_toolkits/mplot3d/axis3d.py 2009-12-20 08:03:40 UTC (rev 8041) @@ -180,7 +180,7 @@ # filter locations here so that no extra grid lines are drawn interval = self.get_view_interval() majorLocs = [loc for loc in majorLocs if \ - interval[0] < loc < interval[1]] + interval[0] <= loc <= interval[1]] self.major.formatter.set_locs(majorLocs) majorLabels = [self.major.formatter(val, i) for i, val in enumerate(majorLocs)] This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |