matplotlib / matplotlib/basemap

contour and contourf produce conflicing results for certain projections

Đang mở
#229 12 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Ngôn ngữ chính
Python
Star
817
Fork
395
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

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()
```

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Hướng nghiên cứu

Bắt đầu bằng cách chạy ví dụ Python tái hiện với data5.bin, so sánh contourf và contour trong phép chiếu lập thể. Kiểm tra cách các lưới x/y đã chiếu được truyền vào từng lời gọi vẽ, sau đó so sánh các kết quả của phép chiếu hình trụ, Lambert Conformal và Albers được mô tả trong issue. Công việc được xem là hoàn tất khi contourf khớp với dữ liệu mong đợi, bao gồm cả khu vực Bắc Mỹ, mà không thay đổi dữ liệu đầu vào.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
matplotlib, numpy, python
Lĩnh vực
data-visualization
Loại issue
Lỗi
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
35/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.