@@ -69,7 +69,14 @@ def _matrix_mask(data, mask):
6969 if mask is None :
7070 mask = np .zeros (data .shape , bool )
7171
72- if isinstance (mask , np .ndarray ):
72+ if isinstance (mask , pd .DataFrame ):
73+ # For DataFrame masks, ensure that semantic labels match data
74+ if not mask .index .equals (data .index ) \
75+ and mask .columns .equals (data .columns ):
76+ err = "Mask must have the same index and columns as data."
77+ raise ValueError (err )
78+ elif hasattr (mask , "__array__" ):
79+ mask = np .asarray (mask )
7380 # For array masks, ensure that shape matches data then convert
7481 if mask .shape != data .shape :
7582 raise ValueError ("Mask must have the same shape as data." )
@@ -79,13 +86,6 @@ def _matrix_mask(data, mask):
7986 columns = data .columns ,
8087 dtype = bool )
8188
82- elif isinstance (mask , pd .DataFrame ):
83- # For DataFrame masks, ensure that semantic labels match data
84- if not mask .index .equals (data .index ) \
85- and mask .columns .equals (data .columns ):
86- err = "Mask must have the same index and columns as data."
87- raise ValueError (err )
88-
8989 # Add any cells with missing data to the mask
9090 # This works around an issue where `plt.pcolormesh` doesn't represent
9191 # missing data properly
0 commit comments