Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitdc13688

Browse files
authored
Merge pull request#7407 from dopplershift/barbs-error
Improve barbs() error message
2 parents1a6a897 +65d818d commitdc13688

File tree

2 files changed

+27
-3
lines changed

2 files changed

+27
-3
lines changed

‎lib/matplotlib/quiver.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -392,6 +392,12 @@ def _parse_args(*args):
392392
returnX,Y,U,V,C
393393

394394

395+
def_check_consistent_shapes(*arrays):
396+
all_shapes=set(a.shapeforainarrays)
397+
iflen(all_shapes)!=1:
398+
raiseValueError('The shapes of the passed in arrays do not match.')
399+
400+
395401
classQuiver(mcollections.PolyCollection):
396402
"""
397403
Specialized PolyCollection for arrows.
@@ -1124,9 +1130,11 @@ def set_UVC(self, U, V, C=None):
11241130
x,y,u,v,c=delete_masked_points(self.x.ravel(),
11251131
self.y.ravel(),
11261132
self.u,self.v,c)
1133+
_check_consistent_shapes(x,y,u,v,c)
11271134
else:
11281135
x,y,u,v=delete_masked_points(self.x.ravel(),self.y.ravel(),
11291136
self.u,self.v)
1137+
_check_consistent_shapes(x,y,u,v)
11301138

11311139
magnitude=np.hypot(u,v)
11321140
flags,barbs,halves,empty=self._find_tails(magnitude,
@@ -1151,16 +1159,17 @@ def set_UVC(self, U, V, C=None):
11511159

11521160
defset_offsets(self,xy):
11531161
"""
1154-
Set the offsets for the barb polygons. This saves theoffets passed in
1155-
and actually sets version masked as appropriate for the existing U/V
1156-
data. *offsets* should be a sequence.
1162+
Set the offsets for the barb polygons. This saves theoffsets passed
1163+
inand actually sets version masked as appropriate for the existing
1164+
U/Vdata. *offsets* should be a sequence.
11571165
11581166
ACCEPTS: sequence of pairs of floats
11591167
"""
11601168
self.x=xy[:,0]
11611169
self.y=xy[:,1]
11621170
x,y,u,v=delete_masked_points(self.x.ravel(),self.y.ravel(),
11631171
self.u,self.v)
1172+
_check_consistent_shapes(x,y,u,v)
11641173
xy=np.hstack((x[:,np.newaxis],y[:,np.newaxis]))
11651174
mcollections.PolyCollection.set_offsets(self,xy)
11661175
self.stale=True

‎lib/matplotlib/tests/test_quiver.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from __future__importprint_function
22
importwarnings
33
importnumpyasnp
4+
fromnose.toolsimportraises
45
importsys
56
frommatplotlibimportpyplotasplt
67
frommatplotlib.testing.decoratorsimportcleanup
@@ -133,6 +134,20 @@ def test_barbs():
133134
cmap='viridis')
134135

135136

137+
@cleanup
138+
@raises(ValueError)
139+
deftest_bad_masked_sizes():
140+
'Test error handling when given differing sized masked arrays'
141+
x=np.arange(3)
142+
y=np.arange(3)
143+
u=np.ma.array(15.*np.ones((4,)))
144+
v=np.ma.array(15.*np.ones_like(u))
145+
u[1]=np.ma.masked
146+
v[1]=np.ma.masked
147+
fig,ax=plt.subplots()
148+
ax.barbs(x,y,u,v)
149+
150+
136151
if__name__=='__main__':
137152
importnose
138153
nose.runmodule()

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp