Skip to content

use level of a MultiIndex for plotting? #3927

Closed
@mathause

Description

@mathause

It would be nice to be able to use a level of a MultiIndex for plotting.

MCVE Code Sample

import numpy as np
import xarray as xr

da = xr.DataArray(
                  np.random.randn(10),
                  dims="x",
                  coords=dict(
                              a=("x", np.arange(10, 20)), 
                              b=("x", np.arange(1, 11))
                              )
                  )

da = da.set_index(x=["a", "b"])
da

This creates the following DataArray

<xarray.DataArray (x: 10)>
array([-1.34516338,  0.97644817, -0.24032189, -0.70112418, -0.8686898 ,
       -0.55607078,  0.56618151,  1.62847463,  0.84947296, -0.5775504 ])
Coordinates:
  * x        (x) MultiIndex
  - a        (x) int64 10 11 12 13 14 15 16 17 18 19
  - b        (x) int64 1 2 3 4 5 6 7 8 9 10

Is there a way to plot a line using one of the levels of the MultiIindex?

da.plot(x="a")

returns

ValueError: x must be either None or one of ('x')
da.plot()

returns

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

(which makes sense). If da is a 2D Variable the error is

ValueError: x and y must be coordinate variables

Expected Output

A line plot

Versions

Output of `xr.show_versions()`

INSTALLED VERSIONS

commit: b3bafee
python: 3.7.3 | packaged by conda-forge | (default, Jul 1 2019, 21:52:21)
[GCC 7.3.0]
python-bits: 64
OS: Linux
OS-release: 4.15.0-91-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.5
libnetcdf: 4.7.1

xarray: 0.11.1+335.gb0c336f6
pandas: 0.25.3
numpy: 1.17.3
scipy: 1.3.1
netCDF4: 1.5.3
pydap: installed
h5netcdf: 0.7.4
h5py: 2.10.0
Nio: None
zarr: 2.3.2
cftime: 1.0.4.2
nc_time_axis: None
PseudoNetCDF: installed
rasterio: 1.1.0
cfgrib: 0.9.5.4
iris: None
bottleneck: 1.2.1
dask: 2.6.0
distributed: 2.6.0
matplotlib: 3.1.2
cartopy: 0.17.0
seaborn: 0.9.0
numbagg: None
pint: None
setuptools: 41.6.0.post20191101
pip: 19.3.1
conda: None
pytest: 5.2.2
IPython: 7.9.0
sphinx: None

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions