2013-04-11 95 views
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']) 

下面是一個例子圖片:

Example

我將不勝感激,如果我牛逼舊的如何解決這個問題。

阿列克謝

+1

您可以將圖片上傳到imgur.com某處,並張貼URL。 – 2013-04-11 12:05:53

+0

謝謝你,列夫,我將圖片添加到imgur.com:http://alekseiva.imgur.com/all/#_=_ – 2013-04-11 12:35:04

+2

它看起來像你有無序的點。你需要對它們進行插值。 'pcolormesh'明確假定你的點是在一個規則的網格上。如果你想繪製顏色編碼的點,使用'scatter'(例如'plt.scatter(x,y,c = value)')。 – 2013-04-11 13:31:28

回答

1

使用喬金頓建議,我通過命令

cs=plt.scatter(x,y,c=value,s=0.6, edgecolors='none',marker=',',cmap=varvid,norm=norm) 

其中井形象化沉澱分佈替換命令

cs=map.pcolormesh(x,y,value,cmap=varvid,norm=norm) 

感謝您的協助!

相關問題