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 685590739,MDU6SXNzdWU2ODU1OTA3Mzk=,4373,Add Dataset.plot.quiver,2448579,closed,0,,,0,2020-08-25T15:39:37Z,2021-02-19T14:21:45Z,2021-02-19T14:21:45Z,MEMBER,,,,"I think it would be nice to add a quiver plot function. I got this far in my current project: ``` python @xarray.plot.dataset_plot._dsplot def quiver(ds, x, y, ax, u, v, **kwargs): from xarray import broadcast if x is None or y is None or u is None or v is None: raise ValueError(""Must specify x, y, u, v for quiver plots."") # matplotlib autoscaling algorithm scale = kwargs.pop(""scale"", None) if scale is None: npts = ds.dims[x] * ds.dims[y] # crude auto-scaling # scale is typical arrow length as a multiple of the arrow width scale = ( 1.8 * ds.to_array().median().values * np.maximum(10, np.sqrt(npts)) ) # / span ds = ds.squeeze() x, y, u, v = broadcast(ds[x], ds[y], ds[u], ds[v]) # no support for these kwargs right now. kwargs.pop(""cmap_params"") kwargs.pop(""hue"") kwargs.pop(""hue_style"") hdl = ax.quiver(x.values, y.values, u.values, v.values, scale=scale, **kwargs) return hdl ``` The autoscaling logic is quite crude; I tried to copy what matplotlib does but got somewhat confused. To get faceting to work properly, we'll need to estimate `scale` around here: https://github.com/pydata/xarray/blob/a36d0a1d4657c848dcdd76d0ecb9c783ad464057/xarray/plot/facetgrid.py#L339-L343","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/4373/reactions"", ""total_count"": 4, ""+1"": 4, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,completed,13221727,issue 685825824,MDU6SXNzdWU2ODU4MjU4MjQ=,4376,wrong chunk sizes in html repr with nonuniform chunks,2448579,open,0,,,3,2020-08-25T21:23:11Z,2020-10-07T11:11:23Z,,MEMBER,,,," **What happened**: The HTML repr is using the first element in a chunks tuple; **What you expected to happen**: it should be using whatever dask does in this case **Minimal Complete Verifiable Example**: ```python import xarray as xr import dask test = xr.DataArray( dask.array.zeros( (12, 901, 1001), chunks=( (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), (1, 899, 1), (1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1), ), ) ) test.to_dataset(name=""a"") ``` ![image](https://user-images.githubusercontent.com/2448579/91229202-fbebfe00-e718-11ea-9127-8b7364976762.png) EDIT: The text repr has the same issue ``` Dimensions: (dim_0: 12, dim_1: 901, dim_2: 1001) Dimensions without coordinates: dim_0, dim_1, dim_2 Data variables: a (dim_0, dim_1, dim_2) float64 dask.array ```","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/4376/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,issue