matplotlib / matplotlib/basemap

contour and contourf produce conflicing results for certain projections

Offen
#229 12 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Vorherrschende Sprache
Python
Sterne
817
Forks
395
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

Originally posted [here](http://stackoverflow.com/questions/33850052/matplotlib-why-inconsistent-results-between-contour-and-contourf) because I wasn't convinced it was a bug (I'm new to matplotlib)... but I'm increasingly convinced it is a bug, so here we are.

I'm plotting some NCEP temperature anomaly data using the stereographic projection. When I plot the data with filled contours, contourf, I see the first picture below. Note the red (positive values) over most of North America. When I change contourf to contour, making no other changes, I see the second picture below. Note the streak of blue (negative values) over central North America.
![demo1](https://cloud.githubusercontent.com/assets/8312113/11348506/37901804-91e4-11e5-96ba-b6b89c820a51.png)![demo2](https://cloud.githubusercontent.com/assets/8312113/11348509/3aa323e2-91e4-11e5-894c-0c40d1c3dcfa.png)
The contour result with the blue is what is actually in the data, and therefore what I expect to see. The contourf result is not what I expect. Is this a bug, or am I using these tools improperly? (Update: The first plot above should look like the below plot, which was produced using the cylindrical projection:)
![demo3](https://cloud.githubusercontent.com/assets/8312113/11348524/495ddf3a-91e4-11e5-8810-f284ebfbfb92.png)
The python code is reproduced below... you can obtain the data as a small binary file [here](https://onedrive.live.com/redir?resid=9F18EDDCF4E99E72!108&authkey=!ADXWQucUMyXgkJk&ithint=file%2cbin) if you want to try it yourself.

Some more notes... (1) shifting the longitude range to -180 to 180 using `addcyclic` and `shiftgrid` does not help. (2) the Lambert Conformal ('lcc') projection produces results that are _less_ wrong, but still not correct, when using contourf. (3) the Alberts Equal Area ('aea') projection centered on North America looks correct, however when I use the North Pole-centric version ('nplaea') I only see correct results for certain values of `lon_0`. I am happy to provide an example if this turns out to be a different issue.

```
import numpy as np
import matplotlib.pyplot as plt

# read data

f = open('data5.bin', 'r')
lat = np.fromfile(f,dtype=np.float32,count=73)
lon = np.fromfile(f,dtype=np.float32,count=144)
data = np.reshape(np.fromfile(f,dtype=np.float32,count=-1),(73,144))
f.close()

# plot

m = Basemap(width=10000000,height=6000000,
resolution='l',projection='stere',\
lat_ts=50,lat_0=50,lon_0=253)
m.drawcoastlines()
lon2d, lat2d = np.meshgrid(lon,lat)
x, y = m(lon2d,lat2d)
mymap = plt.contourf(x,y,data,levels=np.arange(17)-8,cmap=plt.cm.bwr)
plt.colorbar(mymap,orientation='vertical',shrink=0.75)
plt.show()
```

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne damit, das reproduzierte Python-Beispiel mit data5.bin auszuführen und contourf und contour unter der stereografischen Projektion zu vergleichen. Überprüfe, wie die projizierten x/y-Gitter an jeden Plot-Aufruf übergeben werden, und vergleiche anschließend die im Issue beschriebenen Ergebnisse für die zylindrische, Lambert-Conformal- und Albers-Projektion. Als erledigt gilt die Aufgabe, wenn contourf die erwarteten Daten einschließlich der Region Nordamerika abbildet, ohne die Eingabedaten zu ändern.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
matplotlib, numpy, 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
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.