html_url,issue_url,id,node_id,user,created_at,updated_at,author_association,body,reactions,performed_via_github_app,issue https://github.com/pydata/xarray/issues/781#issuecomment-256964206,https://api.github.com/repos/pydata/xarray/issues/781,256964206,MDEyOklzc3VlQ29tbWVudDI1Njk2NDIwNg==,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}",,138045063 https://github.com/pydata/xarray/issues/781#issuecomment-256929821,https://api.github.com/repos/pydata/xarray/issues/781,256929821,MDEyOklzc3VlQ29tbWVudDI1NjkyOTgyMQ==,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}",,138045063 https://github.com/pydata/xarray/issues/781#issuecomment-256894432,https://api.github.com/repos/pydata/xarray/issues/781,256894432,MDEyOklzc3VlQ29tbWVudDI1Njg5NDQzMg==,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}",,138045063 https://github.com/pydata/xarray/issues/781#issuecomment-240997863,https://api.github.com/repos/pydata/xarray/issues/781,240997863,MDEyOklzc3VlQ29tbWVudDI0MDk5Nzg2Mw==,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}",,138045063 https://github.com/pydata/xarray/issues/781#issuecomment-191597245,https://api.github.com/repos/pydata/xarray/issues/781,191597245,MDEyOklzc3VlQ29tbWVudDE5MTU5NzI0NQ==,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}",,138045063 https://github.com/pydata/xarray/issues/781#issuecomment-191595449,https://api.github.com/repos/pydata/xarray/issues/781,191595449,MDEyOklzc3VlQ29tbWVudDE5MTU5NTQ0OQ==,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}",,138045063 https://github.com/pydata/xarray/issues/781#issuecomment-191577576,https://api.github.com/repos/pydata/xarray/issues/781,191577576,MDEyOklzc3VlQ29tbWVudDE5MTU3NzU3Ng==,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}",,138045063 https://github.com/pydata/xarray/issues/781#issuecomment-191549075,https://api.github.com/repos/pydata/xarray/issues/781,191549075,MDEyOklzc3VlQ29tbWVudDE5MTU0OTA3NQ==,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}",,138045063 https://github.com/pydata/xarray/issues/781#issuecomment-191546524,https://api.github.com/repos/pydata/xarray/issues/781,191546524,MDEyOklzc3VlQ29tbWVudDE5MTU0NjUyNA==,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}",,138045063