@@ -141,8 +141,7 @@ def set_3d_properties(self, zs=0, zdir='z'):
141
141
xs = self .get_xdata ()
142
142
ys = self .get_ydata ()
143
143
144
- if not cbook .iterable (zs ):
145
- zs = np .ones (len (xs )) * zs
144
+ zs = np .broadcast_to (zs , len (xs ))
146
145
xyz = np .asarray ([xs , ys , zs ])
147
146
self ._verts3d = juggle_axes_vec (xyz , zdir )
148
147
self .stale = True
@@ -170,7 +169,7 @@ def path_to_3d_segment(path, zs=0, zdir='z'):
170
169
171
170
# Works either if zs is array or scalar
172
171
seg3d [2 ] *= zs
173
-
172
+
174
173
pathsegs = path .iter_segments (simplify = False , curves = False )
175
174
for i , ((x , y ), code ) in enumerate (pathsegs ):
176
175
seg3d [0 :2 , i ] = x , y
@@ -181,13 +180,11 @@ def path_to_3d_segment(path, zs=0, zdir='z'):
181
180
def paths_to_3d_segments (paths , zs = 0 , zdir = 'z' ):
182
181
"""Convert paths from a collection object to 3D segments."""
183
182
184
- if not cbook .iterable (zs ):
185
- zs = np .ones (len (paths )) * zs
183
+ zs = np .broadcast_to (zs , len (paths ))
186
184
187
- segments = []
188
- for path , pathz in zip (paths , zs ):
189
- segments .append (path_to_3d_segment (path , pathz , zdir ))
190
- return np .asarray (segments )
185
+ segs = [path_to_3d_segment (path , pathz , zdir )
186
+ for path , pathz in zip (paths , zs )]
187
+ return np .asarray (segs )
191
188
192
189
193
190
def path_to_3d_segment_with_codes (path , zs = 0 , zdir = 'z' ):
@@ -196,7 +193,7 @@ def path_to_3d_segment_with_codes(path, zs=0, zdir='z'):
196
193
# XXX should we consider a 4d array?
197
194
seg3d = np .ones ((3 , len (path )))
198
195
199
- # Works either if zs is array or scalar
196
+ # Works both if zs is an array and a scalar
200
197
seg3d [2 ] *= zs
201
198
202
199
pathsegs = path .iter_segments (simplify = False , curves = False )
@@ -235,7 +232,7 @@ def set_sort_zpos(self, val):
235
232
236
233
def set_segments (self , segments ):
237
234
"""
238
- Set 3D segments
235
+ Set 3D segments.
239
236
"""
240
237
self ._seg_sizes = [len (c ) for c in segments ]
241
238
self ._segments3d = []
@@ -296,7 +293,8 @@ def __init__(self, *args, zs=(), zdir='z', **kwargs):
296
293
self .set_3d_properties (zs , zdir )
297
294
298
295
def set_3d_properties (self , verts , zs = 0 , zdir = 'z' ):
299
- verts = np .hstack ([verts , np .ones ((len (verts ), 1 )) * zs ])
296
+ zs = np .broadcast_to (zs , len (verts ))
297
+ verts = np .hstack ([verts , zs ])
300
298
self ._segment3d = juggle_axes_vec (verts .T , zdir )
301
299
self ._facecolor3d = Patch .get_facecolor (self )
302
300
@@ -753,7 +751,7 @@ def juggle_axes_vec(xyz, zdir):
753
751
return xyz [[2 , 0 , 1 ]]
754
752
elif zdir == 'y' :
755
753
return xyz [[0 , 2 , 1 ]]
756
- elif zdir [ 0 ] == '-' :
754
+ elif zdir . startswith ( '-' ) :
757
755
return rotate_axes_vec (xyz , zdir )
758
756
else :
759
757
return xyz
@@ -769,12 +767,10 @@ def rotate_axes(xs, ys, zs, zdir):
769
767
return ys , zs , xs
770
768
elif zdir == '-x' :
771
769
return zs , xs , ys
772
-
773
770
elif zdir == 'y' :
774
771
return zs , xs , ys
775
772
elif zdir == '-y' :
776
773
return ys , zs , xs
777
-
778
774
else :
779
775
return xs , ys , zs
780
776
0 commit comments