Skip to content

How to plot boolean vector with current xarray #3722

Closed
@MeraX

Description

@MeraX

Dear all,

I'm trying to plot a vector with bool data. It used to work with xarray version 0.10.7 in an old setup, but it isn't working anymore. Am I doing something wrong or is there something new to consider?

I'm not hundred percent sure, if this problem is due to changes in xarray, numpy or something else

Code example

import xarray
xarray.DataArray([True, False]).plot()

Expected Output

A plot with a line from 1 to 0.

Problem Description

However, I get this error:

TypeError                                 Traceback (most recent call last)
<ipython-input-22-d911786d1072> in <module>
----> 1 xarray.DataArray([True, False]).plot()

~/python_venvs/python3/py3_18.04/lib/python3.6/site-packages/xarray/plot/plot.py in __call__(self, **kwargs)
    463 
    464     def __call__(self, **kwargs):
--> 465         return plot(self._da, **kwargs)
    466 
    467     @functools.wraps(hist)

~/python_venvs/python3/py3_18.04/lib/python3.6/site-packages/xarray/plot/plot.py in plot(darray, row, col, col_wrap, ax, hue, rtol, subplot_kws, **kwargs)
    200     kwargs["ax"] = ax
    201 
--> 202     return plotfunc(darray, **kwargs)
    203 
    204 

~/python_venvs/python3/py3_18.04/lib/python3.6/site-packages/xarray/plot/plot.py in line(darray, row, col, figsize, aspect, size, ax, hue, x, y, xincrease, yincrease, xscale, yscale, xticks, yticks, xlim, ylim, add_legend, _labels, *args, **kwargs)
    321         yplt_val = yplt.values
    322 
--> 323     _ensure_plottable(xplt_val, yplt_val)
    324 
    325     primitive = ax.plot(xplt_val, yplt_val, *args, **kwargs)

~/python_venvs/python3/py3_18.04/lib/python3.6/site-packages/xarray/plot/utils.py in _ensure_plottable(*args)
    510         ):
    511             raise TypeError(
--> 512                 "Plotting requires coordinates to be numeric "
    513                 "or dates of type np.datetime64, "
    514                 "datetime.datetime, cftime.datetime or "

TypeError: Plotting requires coordinates to be numeric or dates of type np.datetime64, datetime.datetime, cftime.datetime or pd.Interval.

Output of xr.show_versions() in the setup that is not working

INSTALLED VERSIONS ------------------ commit: None python: 3.6.7 (default, Oct 22 2018, 11:32:17) [GCC 8.2.0] python-bits: 64 OS: Linux OS-release: 4.15.0-74-generic machine: x86_64 processor: x86_64 byteorder: little LC_ALL: None LANG: en_US.UTF-8 LOCALE: en_US.UTF-8 libhdf5: 1.10.2 libnetcdf: 4.4.1.1

xarray: 0.14.1
pandas: 0.25.3
numpy: 1.18.1
scipy: 1.2.0
netCDF4: 1.4.2
pydap: None
h5netcdf: None
h5py: None
Nio: None
zarr: None
cftime: 1.0.3.4
nc_time_axis: None
PseudoNetCDF: None
rasterio: None
cfgrib: None
iris: None
bottleneck: None
dask: 2.9.2
distributed: None
matplotlib: 3.1.2
cartopy: 0.17.0
seaborn: 0.9.0
numbagg: None
setuptools: 40.6.3
pip: 20.0.1
conda: None
pytest: None
IPython: 7.2.0
sphinx: None

Output of xr.show_versions() in the setup that was working

INSTALLED VERSIONS ------------------ commit: None python: 3.5.2.final.0 python-bits: 64 OS: Linux OS-release: 4.4.0-169-generic machine: x86_64 processor: x86_64 byteorder: little LC_ALL: None LANG: en_US.UTF-8 LOCALE: en_US.UTF-8

xarray: 0.10.7
pandas: 0.22.0
numpy: 1.14.2
scipy: 1.0.0
netCDF4: 1.3.1
h5netcdf: None
h5py: 2.6.0
Nio: None
zarr: None
bottleneck: None
cyordereddict: None
dask: 1.1.3
distributed: None
matplotlib: 2.2.0
cartopy: 0.16.0
seaborn: 0.8.1
setuptools: 26.1.1
pip: 19.3.1
conda: None
pytest: None
IPython: 6.2.1

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions