Python “如何修复”;没有足够的值来解包(预期为2,得到1)“;?

Python “如何修复”;没有足够的值来解包(预期为2,得到1)“;?,python,numpy,matplotlib,matplotlib-basemap,topography,Python,Numpy,Matplotlib,Matplotlib Basemap,Topography,我没有编程方面的背景。我试图为我的类编写一些代码,但它给了我一个错误“没有足够的值来解包(预期为2,得到1)”。我的代码可能有什么问题 from mpl_toolkits.basemap import Basemap import matplotlib.pyplot as plt import pandas as pd import numpy as np import shapefile as shp #Read x, y, z file data = pd.read_excel('Regi

我没有编程方面的背景。我试图为我的类编写一些代码,但它给了我一个错误“没有足够的值来解包(预期为2,得到1)”。我的代码可能有什么问题

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import shapefile as shp

#Read x, y, z file
data = pd.read_excel('RegionV.xlsx', header = None)

# Get X, Y, Z values from file
data = np.array(data)
data = data.astype(np.float)
x = data[:,0]
y =  data[:,1]
z = data[:,2]

#Mask negative values of z (bathemetry)
zz = np.ma.masked_where(z <= 0, z)


#Create a map using basemap
fig = plt.figure(figsize=(10,10))
map = Basemap(projection='mill',llcrnrlat=11,urcrnrlat=15,\
            llcrnrlon=122,urcrnrlon=125,resolution='h')

lon = np.linspace(min(x), max(x))
lat = np.linspace(min(y), max(y))

xs, ys = np.meshgrid(lon, lat)
x, y = map(xs, ys)


map.drawparallels(np.arange(12.,14.,0.5), labels=[0,0,0,1])
map.drawmeridians(np.arange(123.,126.,0.5), labels=[1,0,0,0])

#Plot 
cmap = plt.cm.jet
cmap.set_bad(color='white')
m.pcolormesh(x, y, zz, cmap=cmap, vmax=1300, vmin=0) 
m.colorbar(location='right', label='meters')


map.drawmapboundary()
map.drawcoastlines()

Stackoverflow不允许我发布整个错误消息。希望看到我帖子的人都明白我的意思

我认为问题在于line
x,y=map(xs,ys)
。查看此页面,了解Basemap()函数的文档和示例用法(搜索“.Basemap”关键字)。它说示例用法是:

# create Basemap instance for Robinson projection.
m = Basemap(projection='robin',lon_0=0.5*(lons[0]+lons[-1]))
# compute map projection coordinates for lat/lon grid.
x, y = m(*np.meshgrid(lons,lats))

您尝试从Basemap()实例获取x,y,它只是一个对象。这就是为什么它说它期望2个值(x,y),但只得到一个(Basemap())。

您应该在问题中粘贴准确的错误消息,而不只是解释它。错误消息将告诉您(和其他所有人)问题所在的确切行号。提示:可能有些东西在一个等号的左边有两个东西,但右边只有一个东西不能“拆包”。谷歌“python打包/解包”。一旦你确定了行号,试着为右边的东西添加一个打印行,看看你得到了什么。此外,为了获得最佳效果,一旦你发布了一个问题,最好保持在线状态,因为人们可能会很快提出问题,如果你不回答,你的问题可能会因为“不清楚你在问什么”而被搁置在这种情况下,无法发布答案。
ValueError: not enough values to unpack (expected 2, got 1)
# create Basemap instance for Robinson projection.
m = Basemap(projection='robin',lon_0=0.5*(lons[0]+lons[-1]))
# compute map projection coordinates for lat/lon grid.
x, y = m(*np.meshgrid(lons,lats))