Label row and column titles with units
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 4.2k
- Forks
- 1.4k
- Avg merge
- 2d 15h
- Merged PRs (30d)
- 14
Description
According to this plotting example, xlabels and ylabels are labeled with units. However, row labels and column labels omit the units.
MCVE Code Sample
import xarray as xr
ds = xr.tutorial.scatter_example_dataset()
ds.plot.scatter(x='A', y='B', col='x', row='z', hue='w', hue_style='discrete')
Expected Output
Should xr.FacetGrid include the functionality for plotting row labels and column labels when provided?

Problem Description
It could be solved with the following included in plot/facetgrid.py#L486:
if self.data[self._row_var].attrs.get('units'):
units = self.data[self._row_var].attrs['units']
template="{coord} = {value} [{units}]"
title = nicetitle(coord=self._row_var, value=row_name, \
maxchar=maxchar, template = template, units = unit
and with the following included in plot/facetgrid.py#L499:
if self.data[self._col_var].attrs.get('units'):
units = self.data[self._col_var].attrs['units']
template="{coord} = {value} [{units}]"
title = nicetitle(coord=self._col_var, value=col_name, \
maxchar=maxchar, template = template, units = units)
and with the modification of _nicetitle:
def _nicetitle(coord, value, maxchar, template, units = None):
"""
Put coord, value in template and truncate at maxchar
"""
prettyvalue = format_item(value, quote_strings=False)
if units is not None:
title = template.format(coord=coord, value=prettyvalue, units = units)
else:
title = template.format(coord=coord, value=prettyvalue)
if len(title) > maxchar:
title = title[: (maxchar - 3)] + "..."
return title
Output of xr.show_versions()
INSTALLED VERSIONS
commit: None
python: 3.6.8 (default, Oct 7 2019, 12:59:55)
[GCC 8.3.0]
python-bits: 64
OS: Linux
OS-release: 4.15.0-65-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.6.3
xarray: 0.14.0
pandas: 0.24.2
numpy: 1.17.3
scipy: 1.2.1
netCDF4: 1.5.1.2
pydap: installed
h5netcdf: 0.7.4
h5py: 2.9.0
Nio: None
zarr: 2.3.2
cftime: 1.0.3.4
nc_time_axis: 1.2.0
PseudoNetCDF: None
rasterio: 1.0.5
cfgrib: 0.9.6.2
iris: None
bottleneck: 1.2.1
dask: 2.6.0
distributed: 2.6.0
matplotlib: 3.0.3
cartopy: 0.16.0
seaborn: 0.9.0
numbagg: None
setuptools: 41.0.1
pip: 19.3.1
conda: None
pytest: 4.4.1
IPython: 7.1.1
sphinx: 2.0.1
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Read plot/facetgrid.py around the row and column title handling at the linked lines, then run the MCVE using scatter_example_dataset(). Confirm that row and column labels include their coordinates' units when available, while existing labels without units continue to work.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- matplotlib, python
- Domain
- data-visualization
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 45/100