尝试显示数据值而非标记时出现以下错误:
完成追溯:
Traceback (most recent call last):
File "plotpoints.py", line 45, in <module>
plt.annotate(grid_x,grid_y)
File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 3405, in annotate
ret = gca().annotate(*args, **kwargs)
File "/usr/lib/pymodules/python2.7/matplotlib/axes.py", line 3404, in annotate
a = mtext.Annotation(*args, **kwargs)
File "/usr/lib/pymodules/python2.7/matplotlib/text.py", line 1813, in __init__
annotation_clip=annotation_clip)
File "/usr/lib/pymodules/python2.7/matplotlib/text.py", line 1442, in __init__
x, y = self.xytext = xytext
ValueError: too many values to unpack
代码:
m = mapformat()
dx = 0.25
grid_x, grid_y = np.mgrid[-85:64:dx, 34:49:dx]
grid_z = griddata((data[:,1],data[:,0]), data[:,2], (grid_x,grid_y), method='linear')
x,y = m(data[:,1], data[:,0]) # flip lat/lon
grid_x,grid_y = m(grid_x,grid_y)
plt.annotate(grid_x,grid_y)
#m.plot(grid_x,grid_y, 'ko', markersize=2)
我做错了什么?
答案 0 :(得分:1)
我认为您没有正确地呼叫annotate
plt.annotate(grid_x,grid_y)
看起来像2个数组或点列表(我还没有完全推断出你如何定义这两个变量)。
但文档是:
ax.annotate('local max', xy=(3, 1), ...)
第一个参数是文本,第二个参数是带坐标的元组。
我猜测调用序列会将您的xgrid
参数转换为mtext
,将ygrid
转换为xytext
x, y = self.xytext = xytext
如果ygrid
中的值超过2个,则此解包将产生错误。
annotate
在剧情的特定点添加文字;它不能用于标记一堆数据点的坐标(至少不能在一次调用中)。
答案 1 :(得分:0)
您在右侧调用的函数之一是返回的值多于左侧要分配的变量。
例如,如果您在REPL中执行以下操作:
a,b = [1,2,3]
您将收到以下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack
它有助于查看代码失败的行 - 这样,您就会知道哪个函数返回了太多变量。