home / github

Menu
  • Search all tables
  • GraphQL API

issues

Table actions
  • GraphQL API for issues

1 row where type = "issue" and user = 1562854 sorted by updated_at descending

✎ View and edit SQL

This data as json, CSV (advanced)

Suggested facets: created_at (date), updated_at (date), closed_at (date)

type 1

  • issue · 1 ✖

state 1

  • closed 1

repo 1

  • xarray 1
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
1087126812 I_kwDOAMm_X85AzD0c 6102 Regression in datetime handling in plots jklymak 1562854 closed 0     10 2021-12-22T19:31:53Z 2022-01-09T20:33:29Z 2022-01-09T20:33:29Z CONTRIBUTOR      

5794 (ea2886136dec7047186d) introduced a regression in whether or not pandas datetime converters are loaded or Matplotlib's. This leads to basic Matplotlib-native plotting failing https://github.com/matplotlib/matplotlib/issues/22023 Previously matplotlib's converters were loaded, now pandas are being loaded, despite the downstream user not ever using xarray's plotting utilities.

test code

```python import matplotlib.pyplot as plt import numpy as np import xarray as xr

import matplotlib.units as munits print(munits.registry) ds = xr.Dataset({"time": [np.datetime64('2000-01-01'), np.datetime64('2000-01-02')], "sir": [0, 1]})

fig, ax = plt.subplots()

crashes:

ax.scatter(ds['time'], ds['sir']) plt.show() ```

Previously:

{... <class 'numpy.datetime64'>: <matplotlib.dates._SwitchableDateConverter object at 0x106434ac0>, <class 'datetime.date'>: <matplotlib.dates._SwitchableDateConverter object at 0x106434ac0>, <class 'datetime.datetime'>: <matplotlib.dates._SwitchableDateConverter object at 0x106434ac0>}

Now:

{... <class 'numpy.datetime64'>: <pandas.plotting._matplotlib.converter.DatetimeConverter object at 0x17f288160>, <class 'datetime.date'>: <pandas.plotting._matplotlib.converter.DatetimeConverter object at 0x17f182250>, <class 'datetime.datetime'>: <pandas.plotting._matplotlib.converter.DatetimeConverter object at 0x17f1821c0>, <class 'pandas._libs.tslibs.timestamps.Timestamp'>: <pandas.plotting._matplotlib.converter.DatetimeConverter object at 0x17f16ff40>, <class 'pandas._libs.tslibs.period.Period'>: <pandas.plotting._matplotlib.converter.PeriodConverter object at 0x17f16ffa0>, <class 'datetime.time'>: <pandas.plotting._matplotlib.converter.TimeConverter object at 0x17f288130>}

As you can see, the pandas converters have been loaded without any use of pandas nor xarray plotting utilities.

Suggestion

Of course if xarray plotting is loaded, you should use and register what date converters you would like (I'd suggest matplotlib.dates.ConciseConverter, but your mileage may vary). But I think if the user is just trying to use xarray to load a data set, they should not have decisions made for them about the converter (or any other plotting functions), and to prevent confusion they should get the default matplotlib converter since it handles datetime64 just fine.

I think it could also be argued that this is a pandas issue, in that just importing pandas should not automatically register their converters unless their plotting is used. ping @TomAugspurger because I thought that was the plan, but apparently things changed. And it indeed appears their converter has a bug in it for matplotlib scatter.

Thanks!

{
    "url": "https://api.github.com/repos/pydata/xarray/issues/6102/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed xarray 13221727 issue

Advanced export

JSON shape: default, array, newline-delimited, object

CSV options:

CREATE TABLE [issues] (
   [id] INTEGER PRIMARY KEY,
   [node_id] TEXT,
   [number] INTEGER,
   [title] TEXT,
   [user] INTEGER REFERENCES [users]([id]),
   [state] TEXT,
   [locked] INTEGER,
   [assignee] INTEGER REFERENCES [users]([id]),
   [milestone] INTEGER REFERENCES [milestones]([id]),
   [comments] INTEGER,
   [created_at] TEXT,
   [updated_at] TEXT,
   [closed_at] TEXT,
   [author_association] TEXT,
   [active_lock_reason] TEXT,
   [draft] INTEGER,
   [pull_request] TEXT,
   [body] TEXT,
   [reactions] TEXT,
   [performed_via_github_app] TEXT,
   [state_reason] TEXT,
   [repo] INTEGER REFERENCES [repos]([id]),
   [type] TEXT
);
CREATE INDEX [idx_issues_repo]
    ON [issues] ([repo]);
CREATE INDEX [idx_issues_milestone]
    ON [issues] ([milestone]);
CREATE INDEX [idx_issues_assignee]
    ON [issues] ([assignee]);
CREATE INDEX [idx_issues_user]
    ON [issues] ([user]);
Powered by Datasette · Queries took 21.311ms · About: xarray-datasette