我正在尝试使用plt.text来绘制一个地块上相关的lat/lon点的温度值。
在查看了plt.text文档之后,似乎绘制的值(第三位arg)必须是一个数字,而这个数字必须是一个完整的数字,而不是一个带有小数的数字。
下面是我试图使用的代码和正在接收的相关跟踪错误:
脚本代码:
data = np.loadtxt('/.../.../.../tmax_day0', delimiter=',', skiprows=1)
grid_x, grid_y = np.mgrid[-85:64:dx, 34:49:dx]
temp = data[:,2]
#print temp
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)
#m.plot(x,y, 'ko', markersize=2)
def str_to_float(str):
try:
number = float(str)
except ValueError:
number = 0.0
return number
fmt = str_to_float(temp)
#annotate point temperature on plot
plt.text(grid_x, grid_y, fmt, fontdict=None)跟踪错误:
Traceback (most recent call last):
File "plotpoints.py", line 56, in <module>
fmt = str_to_float(temp)
File "plotpoints.py", line 51, in str_to_float
number = float(str)
TypeError: only length-1 arrays can be converted to Python scalars来自文本文件的数据示例tmax_day0:
latitude,longitude,value
36.65408,-83.21783,90
41.00928,-74.73628,92.02
43.77714,-71.75598,90
44.41944,-72.01944,88.8
39.5803,-79.3394,79
38.3154,-76.5501,86
38.91444,-82.09833,94
40.64985,-75.44771,92.6
41.25389,-70.05972,81.2
39.45202,-74.56699,90.88发布于 2015-07-30 14:05:45
我只能使用以下代码来绘制数据值:
for i in range(len(temp)):
plt.text(x[i], y[i], temp[i], va="top", family="monospace")结果:

发布于 2015-07-30 12:08:49
您不是使用“适当”数组,而是使用numpy数组。Numpy数组不能很好地处理非numpy函数。
从你的评论来看,这是编辑过的。
您首先需要修复字符串,因此它是一个正确的数组。
fmt = fmt[0].split() 我认为应该创建一个新的(正常的)字符串数组。然后将它映射到一个浮标数组:
list_of_floats = np.array(map(float, fmt))https://stackoverflow.com/questions/31722226
复制相似问题