Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 6025b0d

Browse files
committed
rename flag to proj_type, update tests
1 parent acbad48 commit 6025b0d

4 files changed

Lines changed: 29 additions & 18 deletions

File tree

lib/mpl_toolkits/mplot3d/axes3d.py

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ def __init__(self, fig, rect=None, *args, **kwargs):
6363
*elev* Elevation viewing angle (default 30)
6464
*zscale* [%(scale)s]
6565
*sharez* Other axes to share z-limits with
66-
*proj* 'persp' or 'ortho' (default 'persp')
66+
*proj_type* 'persp' or 'ortho' (default 'persp')
6767
================ =========================================
6868
6969
.. versionadded :: 1.2.1
@@ -79,7 +79,7 @@ def __init__(self, fig, rect=None, *args, **kwargs):
7979
self.initial_elev = kwargs.pop('elev', 30)
8080
zscale = kwargs.pop('zscale', None)
8181
sharez = kwargs.pop('sharez', None)
82-
self.set_proj(kwargs.pop('projection', 'persp'))
82+
self.set_proj_type(kwargs.pop('proj_type', 'persp'))
8383

8484
self.xy_viewLim = unit_bbox()
8585
self.zz_viewLim = unit_bbox()
@@ -263,7 +263,7 @@ def draw(self, renderer):
263263
self.apply_aspect()
264264

265265
# add the projection matrix to the renderer
266-
self.M = self.get_proj_matrix()
266+
self.M = self.get_proj()
267267
renderer.M = self.M
268268
renderer.vvec = self.vvec
269269
renderer.eye = self.eye
@@ -961,9 +961,15 @@ def view_init(self, elev=None, azim=None):
961961
else:
962962
self.azim = azim
963963

964-
def set_proj(self, proj):
964+
def set_proj_type(self, proj):
965965
"""
966-
Set the type of projection.
966+
Set the projection type.
967+
968+
Parameters
969+
----------
970+
proj : str
971+
Type of projection, accepts 'persp' and 'ortho'.
972+
967973
"""
968974
if proj == 'persp':
969975
self._projection = proj3d.persp_transformation
@@ -972,7 +978,7 @@ def set_proj(self, proj):
972978
else:
973979
raise ValueError("unrecognized projection: %s" % proj)
974980

975-
def get_proj_matrix(self):
981+
def get_proj(self):
976982
"""
977983
Create the projection matrix from the current viewing position.
978984
@@ -1188,7 +1194,7 @@ def _on_move(self, event):
11881194
return
11891195
self.elev = art3d.norm_angle(self.elev - (dy/h)*180)
11901196
self.azim = art3d.norm_angle(self.azim - (dx/w)*180)
1191-
self.get_proj_matrix()
1197+
self.get_proj()
11921198
self.figure.canvas.draw_idle()
11931199

11941200
# elif self.button_pressed == 2:
@@ -1209,7 +1215,7 @@ def _on_move(self, event):
12091215
self.set_xlim3d(minx - dx, maxx + dx)
12101216
self.set_ylim3d(miny - dy, maxy + dy)
12111217
self.set_zlim3d(minz - dz, maxz + dz)
1212-
self.get_proj_matrix()
1218+
self.get_proj()
12131219
self.figure.canvas.draw_idle()
12141220

12151221
def set_zlabel(self, zlabel, fontdict=None, labelpad=None, **kwargs):

lib/mpl_toolkits/mplot3d/proj3d.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ def persp_transformation(zfront, zback):
125125
])
126126

127127
def ortho_transformation(zfront, zback):
128+
# note: w component in the resulting vector will be (zback-zfront), not 1
128129
a = -(zfront + zback)
129130
b = -(zfront - zback)
130131
return np.array([[2,0,0,0],
-5.06 KB
Loading

lib/mpl_toolkits/tests/test_mplot3d.py

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -439,25 +439,29 @@ def test_proj_axes_cube():
439439
@image_comparison(baseline_images=['proj3d_axes_cube_ortho'],
440440
extensions=['png'], remove_text=True, style='default')
441441
def test_proj_axes_cube_ortho():
442-
M = _test_proj_make_M(proj='ortho')
442+
E = np.array([200, 100, 100])
443+
R = np.array([0, 0, 0])
444+
V = np.array([0, 0, 1])
445+
viewM = proj3d.view_transformation(E, R, V)
446+
orthoM = proj3d.ortho_transformation(-1, 1)
447+
M = np.dot(orthoM, viewM)
443448

444449
ts = '0 1 2 3 0 4 5 6 7 4'.split()
445-
xs = np.array([0, 1, 1, 0, 0, 0, 1, 1, 0, 0]) * 300.0
446-
ys = np.array([0, 0, 1, 1, 0, 0, 0, 1, 1, 0]) * 300.0
447-
zs = np.array([0, 0, 0, 0, 0, 1, 1, 1, 1, 1]) * 300.0
450+
xs = np.array([0, 1, 1, 0, 0, 0, 1, 1, 0, 0]) * 100
451+
ys = np.array([0, 0, 1, 1, 0, 0, 0, 1, 1, 0]) * 100
452+
zs = np.array([0, 0, 0, 0, 0, 1, 1, 1, 1, 1]) * 100
448453

449454
txs, tys, tzs = proj3d.proj_transform(xs, ys, zs, M)
450455

451-
fig, ax = _test_proj_draw_axes(M, s=400)
456+
fig, ax = _test_proj_draw_axes(M, s=150)
452457

453-
ax.scatter(txs, tys, c=tzs)
458+
ax.scatter(txs, tys, s=300-tzs)
454459
ax.plot(txs, tys, c='r')
455460
for x, y, t in zip(txs, tys, ts):
456461
ax.text(x, y, t)
457462

458-
ax.set_xlim(-5, 5)
459-
ax.set_ylim(-5, 5)
460-
# assertFalse()
463+
ax.set_xlim(-200, 200)
464+
ax.set_ylim(-200, 200)
461465

462466
def test_rot():
463467
V = [1, 0, 0, 1]
@@ -520,4 +524,4 @@ def test_autoscale():
520524
def test_axes3d_ortho():
521525
fig = plt.figure()
522526
ax = fig.gca(projection='3d')
523-
ax.set_proj('ortho')
527+
ax.set_proj_type('ortho')

0 commit comments

Comments
 (0)