home / github

Menu
  • Search all tables
  • GraphQL API

issue_comments

Table actions
  • GraphQL API for issue_comments

9 rows where issue = 138045063 sorted by updated_at descending

✎ View and edit SQL

This data as json, CSV (advanced)

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

user 5

  • shoyer 3
  • jhamman 3
  • clarkfitzg 1
  • fmaussion 1
  • mathause 1

issue 1

  • Don't infer x/y coordinates interval breaks for cartopy plot axes · 9 ✖

author_association 1

  • MEMBER 9
id html_url issue_url node_id user created_at updated_at ▲ author_association body reactions performed_via_github_app issue
256964206 https://github.com/pydata/xarray/issues/781#issuecomment-256964206 https://api.github.com/repos/pydata/xarray/issues/781 MDEyOklzc3VlQ29tbWVudDI1Njk2NDIwNg== shoyer 1217238 2016-10-28T16:20:44Z 2016-10-28T16:20:44Z MEMBER

I think a keyword argument is a pretty solid way to handle this. Detecting uniform coordinates specified with floating point numbers is pretty error prone.

{
    "total_count": 1,
    "+1": 1,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  Don't infer x/y coordinates interval breaks for cartopy plot axes 138045063
256929821 https://github.com/pydata/xarray/issues/781#issuecomment-256929821 https://api.github.com/repos/pydata/xarray/issues/781 MDEyOklzc3VlQ29tbWVudDI1NjkyOTgyMQ== jhamman 2443309 2016-10-28T14:09:58Z 2016-10-28T14:09:58Z MEMBER

What got us in trouble before was the approach we took to infering the interval breaks. If you're willing to work through the logic related to 1d and 2d non-uniform coordinates, we can address this.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  Don't infer x/y coordinates interval breaks for cartopy plot axes 138045063
256894432 https://github.com/pydata/xarray/issues/781#issuecomment-256894432 https://api.github.com/repos/pydata/xarray/issues/781 MDEyOklzc3VlQ29tbWVudDI1Njg5NDQzMg== fmaussion 10050469 2016-10-28T11:06:35Z 2016-10-28T11:06:35Z MEMBER

Yes, this is definitely a problem.

See for example the differences between imshow (which does fine) and pcolormesh (which is clearly wrong)

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

da = xr.DataArray(np.arange(20).reshape(4, 5), dims=['lat', 'lon'], coords = {'lat': np.linspace(0, 30, 4), 'lon': np.linspace(-20, 20, 5)})

f = plt.figure() ax = plt.axes(projection=ccrs.PlateCarree()) da.plot.pcolormesh(ax=ax, transform=ccrs.PlateCarree()) lon, lat = np.meshgrid(da.lon.values, da.lat.values) ax.scatter(lon, lat, transform=ccrs.PlateCarree()) ax.coastlines() ax.set_title('pcolormesh')

f = plt.figure() ax = plt.axes(projection=ccrs.PlateCarree()) da.plot.imshow(ax=ax, transform=ccrs.PlateCarree()) ax.scatter(lon, lat, transform=ccrs.PlateCarree()) ax.coastlines() ax.set_title('imshow')

plt.show() ```

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  Don't infer x/y coordinates interval breaks for cartopy plot axes 138045063
240997863 https://github.com/pydata/xarray/issues/781#issuecomment-240997863 https://api.github.com/repos/pydata/xarray/issues/781 MDEyOklzc3VlQ29tbWVudDI0MDk5Nzg2Mw== mathause 10194086 2016-08-19T11:48:25Z 2016-08-19T11:48:25Z MEMBER

Sorry to for joining so late but I am unhappy with this change - because now all the global cartopy maps look like this:

and more importantly - there is no way to change this. Thus, I would suggest to add a keyword argument to plot2d.

either

infer_interval_breaks : bool, optional Only applies to pcolormesh. If True calculates the edges of the coordinates and if False uses the given coordinates. Default True.

or if we don't want to break the current behaviour:

infer_interval_breaks : bool or None, optional Only applies to pcolormesh. For None infer_interval_breaks is set to True if the axis has no projection and else to False. If True calculates the edges of the coordinates, if False uses the given coordinates. Default None.

What is your opinion on this?

@pheidippides

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  Don't infer x/y coordinates interval breaks for cartopy plot axes 138045063
191597245 https://github.com/pydata/xarray/issues/781#issuecomment-191597245 https://api.github.com/repos/pydata/xarray/issues/781 MDEyOklzc3VlQ29tbWVudDE5MTU5NzI0NQ== shoyer 1217238 2016-03-03T06:08:46Z 2016-03-03T06:08:46Z MEMBER

OK, that seem pretty compelling to me. You do lose one row of data across the top of the image, but that's better than the artifact.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  Don't infer x/y coordinates interval breaks for cartopy plot axes 138045063
191595449 https://github.com/pydata/xarray/issues/781#issuecomment-191595449 https://api.github.com/repos/pydata/xarray/issues/781 MDEyOklzc3VlQ29tbWVudDE5MTU5NTQ0OQ== jhamman 2443309 2016-03-03T05:58:12Z 2016-03-03T05:58:12Z MEMBER

A little example of where I'm seeing this go wrong (I think). Here I'm plotting the terrain height variable across the Arctic region, the north pole is somewhere in the middle of the plot. As you can see, there is an odd streak across the plot when using the xarray pcolormesh.

``` Python import cartopy.crs as ccrs

projection class

class Rasm(ccrs.Projection):

def __init__(self):

    proj4_params = {'R': 6371200.0,
                    'lat_0': 90.0,
                    'lat_1': 90,
                    'lat_2': 90,
                    'lon_0': -114.0+360,
                    'proj': 'lcc',
                    'units': 'm',
                    'x_0': 9469302.950316086,
                    'y_0': 6201952.603370549}

    super(Rasm, self).__init__(proj4_params)

@property
def boundary(self):
    coords = ((self.x_limits[0], self.y_limits[0]),(self.x_limits[1], self.y_limits[0]),
              (self.x_limits[1], self.y_limits[1]),(self.x_limits[0], self.y_limits[1]),
              (self.x_limits[0], self.y_limits[0]))

    return ccrs.sgeom.Polygon(coords).exterior

@property
def threshold(self):
    return 100000.0

@property
def x_limits(self):
    return (0, 16423961.103252266)

@property
def y_limits(self):
    return (0, 12228062.194885937)

plt.figure() ax = plt.subplot(projection=Rasm()) elev.plot.pcolormesh('longitude', 'latitude', transform=ccrs.PlateCarree(), vmin=0, vmax=2500, cmap='terrain', add_colorbar=False) ax.set_title('Using xarray plotting')

plt.figure() ax = plt.subplot(projection=Rasm()) ax.pcolormesh(elev.longitude, elev.latitude, elev.to_masked_array(), transform=ccrs.PlateCarree(), cmap='terrain', vmin=0, vmax=2500) ax.set_title('Using pyplot and Cartopy') ```

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  Don't infer x/y coordinates interval breaks for cartopy plot axes 138045063
191577576 https://github.com/pydata/xarray/issues/781#issuecomment-191577576 https://api.github.com/repos/pydata/xarray/issues/781 MDEyOklzc3VlQ29tbWVudDE5MTU3NzU3Ng== clarkfitzg 5356122 2016-03-03T04:31:19Z 2016-03-03T04:31:19Z MEMBER

@jhamman Seems like that would work. Might write a test to make sure the edges don't get dropped. I'd say let cartopy do as much as possible! cartopy integration was a lower priority when I was working on this, but only because we wanted to get the base stuff working first. More seamless integration or documentation for how to use with cartopy would be a good thing.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  Don't infer x/y coordinates interval breaks for cartopy plot axes 138045063
191549075 https://github.com/pydata/xarray/issues/781#issuecomment-191549075 https://api.github.com/repos/pydata/xarray/issues/781 MDEyOklzc3VlQ29tbWVudDE5MTU0OTA3NQ== jhamman 2443309 2016-03-03T02:36:55Z 2016-03-03T02:36:55Z MEMBER

@shoyer - I'm not sure that problem exists when plotting with carotpy. I'd have to check though.

Yes, my coordinates are quite unevenly spaced (Equal area projection over the north pole).

My suggestion is that we let cartopy handle locating the coordinates when applicable.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  Don't infer x/y coordinates interval breaks for cartopy plot axes 138045063
191546524 https://github.com/pydata/xarray/issues/781#issuecomment-191546524 https://api.github.com/repos/pydata/xarray/issues/781 MDEyOklzc3VlQ29tbWVudDE5MTU0NjUyNA== shoyer 1217238 2016-03-03T02:21:30Z 2016-03-03T02:21:30Z MEMBER

Inferring x/y coordinate breaks solves the puzzle of losing the last row and column of data when plotting with pcolormesh.

Are your coordinates very unevenly spaced? I'm curious what goes wrong here -- it's nice to plot all the data if possible.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  Don't infer x/y coordinates interval breaks for cartopy plot axes 138045063

Advanced export

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

CSV options:

CREATE TABLE [issue_comments] (
   [html_url] TEXT,
   [issue_url] TEXT,
   [id] INTEGER PRIMARY KEY,
   [node_id] TEXT,
   [user] INTEGER REFERENCES [users]([id]),
   [created_at] TEXT,
   [updated_at] TEXT,
   [author_association] TEXT,
   [body] TEXT,
   [reactions] TEXT,
   [performed_via_github_app] TEXT,
   [issue] INTEGER REFERENCES [issues]([id])
);
CREATE INDEX [idx_issue_comments_issue]
    ON [issue_comments] ([issue]);
CREATE INDEX [idx_issue_comments_user]
    ON [issue_comments] ([user]);
Powered by Datasette · Queries took 15.12ms · About: xarray-datasette