长度为1的数组和Python标量通过plt.text

时间:2015-07-30 11:12:30

标签: python arrays numpy matplotlib scipy

我试图用plt.text绘制地块上相关纬度/经度点的温度值。

在查看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

2 个答案:

答案 0 :(得分:1)

我只能使用以下代码来绘制数据值:

FILE="$( echo "Please provide the file:" >&2 ; read a; echo $a )"

结果:

points

答案 1 :(得分:0)

你没有使用&#34;正确的&#34;数组,而是使用numpy数组。 Numpy数组不适用于非numpy函数。

根据您的评论,此内容已经过修改。

首先需要修复字符串,使其成为正确的数组。

fmt = fmt[0].split() 

我认为应该创建一个新的(普通)字符串数组。然后将其映射到浮点数组:

list_of_floats = np.array(map(float, fmt))