Open bradyrx opened 4 years ago
Unfortunately this bug is related to the incompatibility of "cftime" axes with native matplotlib datetime locators, not a proplot bug:
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import numpy as np
import xarray as xr
times = xr.cftime_range('1990', '2000', freq='M')
data = xr.DataArray(
np.random.rand(len(times)),
dims=['time'],
coords=[times]
)
f, ax = plt.subplots()
ax.plot(data.time, data)
ax.xaxis.set_major_locator(mdates.YearLocator(1))
It appears the default locator for cftime axes is a special nc_time_axis
locator:
In [5]: ax.xaxis.get_major_locator()
Out[5]: <nc_time_axis.NetCDFTimeDateLocator at 0x1222c2898>
And unforunately, the nc_time_axis
module does not seem to have any other available tick locators. You should request this feature on the nc-time-axis
github page.
Thanks @lukelbd, I'll move this over there when I get a chance.
I'm reopening this based on our discussion at https://github.com/SciTools/nc-time-axis/issues/41. It looks like nc-time-axis
is sort of a dead repo. This is on the longer-term list for proplot
developments.
Works for me
After the reorganization, the cftime
additions should go in ticker.py
. This isn't a priority for me right now, but this is an ideal issue for collaboration if someone else wants to try
Code sample, a copy-pastable example if possible
Actual result vs. expected result
The x datetime axis appears by default (with the comments included above), but when using
ax.format(xlocator='year')
or any locator, the xticks and labeling completely disappear.When using any formatter (e.g.
xformatter='concise')
it breaks with the following error: