使用pcolormesh()投影到地理地图上

时间:2018-07-09 00:40:08

标签: python python-3.x matplotlib matplotlib-basemap

我正在使用此程序预测我在印度地区的氨浓度,但是当我运行此代码时:

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
import numpy as np

def read_datafile(file_name):
data = np.genfromtxt(file_name, delimiter=',', names=['lat', 'lon', 'nh'])
return data

data = read_datafile('E:/algo/data/combining/FINAL_DATA.csv')

map = Basemap(llcrnrlon=66,llcrnrlat=6,urcrnrlon=98.5,urcrnrlat=38, resolution='i', projection='cyl')
map.drawcoastlines()
map.drawlsmask()
map.drawcountries()
parallels = np.arange(6,38,5)
meridians = np.arange(66,99,5)
map.drawparallels(parallels,labels=[1,0,0,0],fontsize=10)
map.drawmeridians(meridians,labels=[0,0,0,1],fontsize=10)

lons,lats= np.meshgrid(data['lon'][1:],data['lat'][1:],sparse = 'True')
x,y = map(lons,lats)
map.pcolormesh(x,y,data['nh'][1:])
plt.show()

它向我显示错误:

ValueError: not enough values to unpack (expected 2, got 1)
map.pcolor(x,y,z)

我使用data['lon'][1:]是因为第一个值是nan,可能是由于标头。 因此,请以任何方式消除该错误! csv文件包含:

,lat,lon,Unnamed: 0,nh
0,7.75,71.75,0.5,8501464385113510.0
1,7.75,74.25,2.5,8019719264331602.0
2,7.75,75.25,4.5,7708972186355438.0
3,7.75,78.75,6.5,1.5269509187007006e+16
4,7.75,87.75,8.5,1.5235106744690036e+16
5,7.75,88.25,10.0,8944079502837338.0
6,7.75,91.25,12.0,1.1589890596655764e+16
7,7.75,91.75,14.5,1.0453168566752552e+16  
8,7.75,92.75,16.0,1.0493223728181644e+16
9,7.75,93.25,18.5,1.0345603893411792e+16
10,7.75,95.25,21.0,1.141171929073354e+16
11,7.75,96.75,22.5,7782035033549430.0
12,8.25,70.25,24.0,8201072171587072.0
13,8.25,70.75,25.5,7602494056851770.0
14,8.25,73.25,28.0,9214770255302838.0
15,8.25,73.75,30.0,7005492206478936.0
16,8.25,74.25,31.0,8266837257825698.0
17,8.25,76.25,32.5,8149348547108306.0
18,8.25,78.25,34.5,7761299283688882.0
19,8.25,79.25,36.5,8122365507049480.0
20,8.25,84.25,38.5,7505510890250006.0
21,8.25,86.75,40.0,9349574410796046.0
22,8.25,87.25,41.0,9759035121454402.0

0 个答案:

没有答案