Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork7.9k
Open
Description
Bug summary
When callingplt.pcolormesh
with a dataframe containing either of the pandas nullable dtypes (Int64
orFloat64
) it crashes.
Code for reproduction
importmatplotlib.pyplotaspltimportpandasaspddf=pd.DataFrame({'foo' : [1,2],'bar' : [3,np.nan] })# works as expectedplt.pcolormesh(df)# crashesplt.pcolormesh(df.astype('Int64'))
Actual outcome
---------------------------------------------------------------------------TypeError Traceback (most recent call last)Input In [28], in <cell line: 13>() 10 plt.pcolormesh(df) 12 # crashes---> 13 plt.pcolormesh(df.astype('Int64'))File ~/.virtualenvs/teaching/lib/python3.10/site-packages/matplotlib/pyplot.py:2728, in pcolormesh(alpha, norm, cmap, vmin, vmax, shading, antialiased, data, *args, **kwargs) 2723 @_copy_docstring_and_deprecators(Axes.pcolormesh) 2724 def pcolormesh( 2725 *args, alpha=None, norm=None, cmap=None, vmin=None, 2726 vmax=None, shading=None, antialiased=False, data=None, 2727 **kwargs):-> 2728 __ret = gca().pcolormesh( 2729 *args, alpha=alpha, norm=norm, cmap=cmap, vmin=vmin, 2730 vmax=vmax, shading=shading, antialiased=antialiased, 2731 **({"data": data} if data is not None else {}), **kwargs) 2732 sci(__ret) 2733 return __retFile ~/.virtualenvs/teaching/lib/python3.10/site-packages/matplotlib/__init__.py:1414, in _preprocess_data.<locals>.inner(ax, data, *args, **kwargs) 1411 @functools.wraps(func) 1412 def inner(ax, *args, data=None, **kwargs): 1413 if data is None:-> 1414 return func(ax, *map(sanitize_sequence, args), **kwargs) 1416 bound = new_sig.bind(ax, *args, **kwargs) 1417 auto_label = (bound.arguments.get(label_namer) 1418 or bound.kwargs.get(label_namer))File ~/.virtualenvs/teaching/lib/python3.10/site-packages/matplotlib/axes/_axes.py:6072, in Axes.pcolormesh(self, alpha, norm, cmap, vmin, vmax, shading, antialiased, *args, **kwargs) 6068 C = C.ravel() 6070 kwargs.setdefault('snap', rcParams['pcolormesh.snap'])-> 6072 collection = mcoll.QuadMesh( 6073 coords, antialiased=antialiased, shading=shading, 6074 array=C, cmap=cmap, norm=norm, alpha=alpha, **kwargs) 6075 collection._scale_norm(norm, vmin, vmax) 6076 self._pcolor_grid_deprecation_helper()File ~/.virtualenvs/teaching/lib/python3.10/site-packages/matplotlib/collections.py:2015, in QuadMesh.__init__(self, *args, **kwargs) 2012 self._bbox.update_from_data_xy(self._coordinates.reshape(-1, 2)) 2013 # super init delayed after own init because array kwarg requires 2014 # self._coordinates and self._shading-> 2015 super().__init__(**kwargs) 2016 self.mouseover = FalseFile ~/.virtualenvs/teaching/lib/python3.10/site-packages/matplotlib/collections.py:217, in Collection.__init__(self, edgecolors, facecolors, linewidths, linestyles, capstyle, joinstyle, antialiaseds, offsets, transOffset, norm, cmap, pickradius, hatch, urls, zorder, **kwargs) 214 self._transOffset = transOffset 216 self._path_effects = None--> 217 self.update(kwargs) 218 self._paths = NoneFile ~/.virtualenvs/teaching/lib/python3.10/site-packages/matplotlib/artist.py:1069, in Artist.update(self, props) 1066 if not callable(func): 1067 raise AttributeError(f"{type(self).__name__!r} object " 1068 f"has no property {k!r}")-> 1069 ret.append(func(v)) 1070 if ret: 1071 self.pchanged()File ~/.virtualenvs/teaching/lib/python3.10/site-packages/matplotlib/collections.py:2077, in QuadMesh.set_array(self, A) 2072 if faulty_data: 2073 raise TypeError( 2074 f"Dimensions of A {A.shape} are incompatible with " 2075 f"X ({width}) and/or Y ({height})")-> 2077 return super().set_array(A)File ~/.virtualenvs/teaching/lib/python3.10/site-packages/matplotlib/cm.py:477, in ScalarMappable.set_array(self, A) 475 A = cbook.safe_masked_invalid(A, copy=True) 476 if not np.can_cast(A.dtype, float, "same_kind"):--> 477 raise TypeError(f"Image data of dtype {A.dtype} cannot be " 478 "converted to float") 480 self._A = ATypeError: Image data of dtype object cannot be converted to float
Expected outcome
Additional information
Noticed via seabornmwaskom/seaborn#3042.
Operating system
lubuntu
Matplotlib Version
3.5.3
Matplotlib Backend
module://matplotlib_inline.backend_inline
Python version
3.10.4
Jupyter version
6.4.12
Installation
pip