[英]matplotlib pcolormesh artifact
我有一个文件 ,其格式描述了地球上的网格:
lon1,lat1,value1
lon2,lat2,value2
...
我编写了以下脚本以进行绘制:
import matplotlib.pyplot as plt
import numpy as np
import numpy.ma as ma
lons,lats,grads=np.loadtxt('surface.txt',dtype=str).T
lons=lons.astype(float).reshape(715,252)
lats=lats.astype(float).reshape(715,252)
grads[grads=='NA'] = np.nan
grads=grads.astype(float).reshape(715,252)
grads=ma.masked_where(np.isnan(grads),grads)
fig=plt.figure()
ax=plt.gca()
im=ax.pcolormesh(lons,lats,grads)
plt.colorbar(im)
plt.title('pcolormesh')
除了出现在y=-5
附近的伪像之外,其他所有东西都工作正常。
我已经用contourf
绘制了相同的数据,以确保它不在数据中并且工件消失了,但是我想使用pcolormesh
来pcolormesh
。
fig=plt.figure()
ax=plt.gca()
im=ax.contourf(lons,lats,grads)
plt.colorbar(im)
plt.title('contourf')
我找到了这个相关问题,但无法从中找到解决方案: matplotlib pcolormesh创建数据工件
在@Eric发表评论之后
您的问题是纬度和经度是循环的,并且最大的经度值会回绕
我更改了代码以在绘制之前对经度重新排序,以使它们连续。
data=np.loadtxt('surface.txt',dtype=str)
lons=data.T[0].astype(float)
#reorder the data so that lons smaller than 180 are before larger ones
data=np.hstack((data[lons<180].T,data[lons>=180].T))
lons,lats,grads=data
lons=lons.astype(float).reshape(715,252)
lats=lats.astype(float).reshape(715,252)
grads[grads=='NA']=np.nan
grads=grads.astype(float).reshape(715,252)
grads=ma.masked_where(np.isnan(grads),grads)
fig=plt.figure()
ax=plt.gca()
im=ax.pcolormesh(lons,lats,grads)
plt.colorbar(im)
plt.title('pcolormesh')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.