matplotlib / matplotlib/basemap
contour not closed across 0 meridian in polar projection
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 817
- Forks
- 395
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
Hi all,
I'm trying to fetch contour line coordinates from a npaeqd projection plot and I noticed that the contour lines will be broken into 2 parts whenever it crosses the 0-degree longitude, even though they form a closed contour and after calling addcyclic(). Below is minimal working example:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import addcyclic
from mpl_toolkits.basemap import Basemap
lats=np.linspace(0,90,90)
lons=np.linspace(0,360,360)
# make some toy data
xx,yy=np.meshgrid(lons,lats)
z=np.cos(xx*np.pi/180)*np.sin(yy*np.pi/180)
# add cyclic
z,lons=addcyclic(z,lons)
xx,yy=np.meshgrid(lons,lats)
# get contours
bmap=Basemap(projection='npaeqd',boundinglat=0,lon_0=0,
resolution='l')
fig=plt.figure(figsize=(12,6))
ax1=fig.add_subplot(1,2,1)
contours=bmap.contour(xx,yy,z,[-0.6,0.6],latlon=True,ax=ax1)
bmap.drawcoastlines(ax=ax1)
clines1=contours.collections[0].get_paths()
clines2=contours.collections[1].get_paths()
print 'len(clines1), num of contours across 180', len(clines1)
print 'len(clines2), num of contours across 0', len(clines2)
# plot contours
ax2=fig.add_subplot(1,2,2)
xs=clines1[0].vertices[:,0]
ys=clines1[0].vertices[:,1]
ax2.plot(xs,ys,'b-',label='Contour across 180')
xs=clines2[0].vertices[:,0]
ys=clines2[0].vertices[:,1]
ax2.plot(xs,ys,'r-',label='Half contour across 0')
xs=clines2[1].vertices[:,0]
ys=clines2[1].vertices[:,1]
ax2.plot(xs,ys,'g-',label='Half contour across 0')
ax2.legend()
plt.show(block=False)
Figure output here
The yellow contour on the left are made up by 2 lines (red+green) on the right. This makes it difficult when I try to detect and track some features that move across the 0-meridian.
Is it intended or a bug?
Some specs:
basemap 1.0.7
matplotlib 2.2.2, both installed via conda install
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne mit dem minimalen Beispiel unter Verwendung von addcyclic() und Basemap.contour() in der npaeqd-Projektion und untersuche anschließend, wie Konturenpfade um den 0-Grad-Meridian zurückgegeben werden. Als abgeschlossen gilt, wenn die geschlossene Kontur als ein kontinuierlicher Pfad statt in zwei Teilen zurückgegeben wird, während die Kontur des Beispiels über 180 Grad hinweg korrekt bleibt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- matplotlib, python
- Bereich
- data-visualization
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 48/100