1
我需要将雨量总和(来自卫星观测)的数据绘制到grib2文件的地图上。最后,我设法通过文本文件将数据加载到numpy数组中,并使用Basemap将其与图片坐标绑定。但问题是,Python不会从数据中提取彩色点,但往往会在数据字段中的相邻点之间画线,所以情节看起来很难看。 我没有看到问题的根源。我的代码pcolormesh不绘制点但是数据点之间的线条
片段:
import numpy as np
import matplotlib
matplotlib.use('Agg')
from scipy import *
from pylab import *
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import cm
之后我读所需要的数据,并产生3个numpy的阵列,形状近似(100000,2),其分别包含纬度,经度,以度为单位和每个数据点的值。我可视化使用这些命令它:
def joonista(lats,lons,value,nimi,clevs,koloriit):
---------描述重塑(未示出),的片段产生阵列“拉特”,“LONS”,“值” ----- -------
map=Basemap(projection='aea',lat_1=30,lat_2=50,lat_0=45,lon_0=0,llcrnrlon=-30,llcrnrlat=20,urcrnrlon=80,urcrnrlat=53,resolution='l',)
x, y = map(lons, lats)
map.drawcoastlines(linewidth=0.17,color='0.7')
map.drawcountries(linewidth=0.17,color='0.7')
map.drawmeridians(np.arange(-50,60,5),linewidth=0.17,color='0.7',labels=[False,False,False,True])
map.drawparallels(np.arange(-25, 70, 5),linewidth=0.17,color='0.7',labels=[True,False,False,False])
varvid=mpl.colors.ListedColormap(koloriit)
norm = mpl.colors.BoundaryNorm(clevs,varvid.N)
cs = map.pcolormesh(x,y,value,cmap=varvid,norm=norm)
savefig(nimi,dpi=300)
plt.clf()
joonista(latA,lonA,valueA,'h05',[-1,0.00001,0.001,0.01,0.1,0.3,0.5,1,2,3,4,5,6,7,8,9,10,11,12,13],['k','c','#a0fff9','#00b354','#69b300','#97ff03','#C2524D','#FF7500','#b3a900','#fff551','#515bff','#45adff','#da000d','#ff2a36','#ffa0a5','#f003ff','#f778ff','0.5','0.75'])
joonista(latB,lonB,valueB,'h04',[-1,0.0000000000001,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18],['k','c','#a0fff9','#00b354','#69b300','#97ff03','#C2524D','#FF7500','#b3a900','#fff551','#515bff','#45adff','#da000d','#ff2a36','#ffa0a5','#f003ff','#f778ff','0.5','0.75'])
下面是一个例子图片:
我将不胜感激,如果我牛逼旧的如何解决这个问题。
阿列克谢
您可以将图片上传到imgur.com某处,并张贴URL。 – 2013-04-11 12:05:53
谢谢你,列夫,我将图片添加到imgur.com:http://alekseiva.imgur.com/all/#_=_ – 2013-04-11 12:35:04
它看起来像你有无序的点。你需要对它们进行插值。 'pcolormesh'明确假定你的点是在一个规则的网格上。如果你想绘制颜色编码的点,使用'scatter'(例如'plt.scatter(x,y,c = value)')。 – 2013-04-11 13:31:28