home / github / issues

Menu
  • GraphQL API
  • Search all tables

issues: 946439792

This data as json

id node_id number title user state locked assignee milestone comments created_at updated_at closed_at author_association active_lock_reason draft pull_request body reactions performed_via_github_app state_reason repo type
946439792 MDU6SXNzdWU5NDY0Mzk3OTI= 5614 col_wrap arg to da.plot() can be a string? 7461221 open 0     2 2021-07-16T16:31:24Z 2021-07-16T18:12:41Z   NONE      

What happened: if you try to plot a data array with 3 dimensions but the third dim has length 1, then col_wrap accepts a dim name and plots facets with pcolormesh. according to the documentation col_wrap argument should be an int so I assume this is unintentional http://xarray.pydata.org/en/stable/generated/xarray.DataArray.plot.html

if dim 3 has length >1, then col_wrap still takes a str but uses hist()

What you expected to happen: I expected an error if col_wrap is not an int. I also expected da.plot(col='3rd_dim') to give me one facet if the dim has length 1 - this (mis)behavior is described in #620

all a bit confusing :). I thought I understood plotting but then ran into bug #620 and started fumbling around. I am trying to plot a dataarray in a function but I don't know ahead of time how many values 3rd dim has. I also wanted to avoid limiting my function to pcolormesh() only. da.plot.pcolormesh(col='3rd_dim') works to plot the images regardless of dim length.

Minimal Complete Verifiable Example: ``` da_list = [] for i in np.arange(1,3): data = np.ones((64, 48), dtype = 'uint8') * (200-i15) oneframe = xr.DataArray( data=data[..., None], dims=('x', 'y','measurement'), coords={'measurement':[f't{i40}']} )

da_list.append(oneframe)

twoframes = xr.concat(da_list, 'measurement') ```

oneframe.plot(col_wrap='measurement') # Oddly, facets with pcolormesh() twoframes.plot(col_wrap='measurement') # Oddly, a single facet with hist() oneframe.plot(col='measurement') # ValueError: IndexVariable objects must be 1-dimensional ala issue #620 twoframes.plot(col='measurement') # facets with pcolormesh() oneframe.plot.pcolormesh(col='measurement') # facets with pcolormesh() twoframes.plot.pcolormesh(col='measurement') #facets with pcolormesh()

Anything else we need to know?: @nfahlgren noted a workaround using FacetGrid directly

from xarray.plot.facetgrid import FacetGrid gd = FacetGrid(data=oneframe, col="measurement") gd.map_dataarray(xr.plot.imshow, "x", "y") is consistent with: gd = FacetGrid(data=twoframes, col="measurement") gd.map_dataarray(xr.plot.imshow, "x", "y")

Environment: Windows 10, python 3.7

Output of <tt>xr.show_versions()</tt> INSTALLED VERSIONS ------------------ commit: None python: 3.7.10 | packaged by conda-forge | (default, Feb 19 2021, 15:37:01) [MSC v.1916 64 bit (AMD64)] python-bits: 64 OS: Windows OS-release: 10 machine: AMD64 processor: Intel64 Family 6 Model 158 Stepping 10, GenuineIntel byteorder: little LC_ALL: None LANG: None LOCALE: None.None libhdf5: None libnetcdf: None xarray: 0.17.0 pandas: 1.2.3 numpy: 1.20.1 scipy: 1.6.0 netCDF4: None pydap: None h5netcdf: None h5py: None Nio: None zarr: 2.7.0 cftime: None nc_time_axis: None PseudoNetCDF: None rasterio: None cfgrib: None iris: None bottleneck: None dask: 2021.02.0 distributed: 2021.02.0 matplotlib: 3.3.4 cartopy: None seaborn: None numbagg: None pint: None setuptools: 49.6.0.post20210108 pip: 21.1.2 conda: 4.10.1 pytest: 6.2.2 IPython: 7.24.1 sphinx: None
{
    "url": "https://api.github.com/repos/pydata/xarray/issues/5614/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    13221727 issue

Links from other tables

  • 2 rows from issues_id in issues_labels
  • 2 rows from issue in issue_comments
Powered by Datasette · Queries took 88.696ms · About: xarray-datasette