Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用matplotlib将数组中的数字打印为注释?_Python_Arrays_Numpy_Matplotlib - Fatal编程技术网

Python 如何使用matplotlib将数组中的数字打印为注释?

Python 如何使用matplotlib将数组中的数字打印为注释?,python,arrays,numpy,matplotlib,Python,Arrays,Numpy,Matplotlib,我正在尝试使用从气象数据中提取的值在基础地图上生成地图。示例代码是:- y=[2.56422, 3.77284,3.52623,3.51468,3.02199] z=[0.15, 0.3, 0.45, 0.6, 0.75] n=[58,651,393,203,123] fig, ax = plt.subplots() ax.scatter(z, y) for i, txt in enumerate(n): ax.annotate(txt, (z[i],y[i])) 我使用的数据是

我正在尝试使用从气象数据中提取的值在基础地图上生成地图。示例代码是:-

y=[2.56422, 3.77284,3.52623,3.51468,3.02199]
z=[0.15, 0.3, 0.45, 0.6, 0.75]
n=[58,651,393,203,123]

fig, ax = plt.subplots()
ax.scatter(z, y)

for i, txt in enumerate(n):
    ax.annotate(txt, (z[i],y[i]))

我使用的数据是一个numpy数组。我不知道如何循环通过每个数组来绘制类似于上面的地图。我只想绘制值(即编号
countour
tourtf

最初,我试图使用
pylab.plot
函数绘制浮点值。然而,它返回了错误

ValueError: third arg must be a format string
然后我尝试将此numpy数组转换为字符串,然后使用以下命令进行打印:-

temperature = np.array2string(data, precision=2)
print语句看起来像一个修改过的字符串:-

print temperature
[[ 19.69  21.09  21.57  21.45  20.59  20.53  20.93  20.63  20.64  21.26
   21.29  20.63  20.98  21.01  20.84  20.81  20.55  20.33  20.52  20.23
   19.84]
 [ 20.77  21.35  20.81  20.64  20.9   20.78  20.79  23.57  20.11  21.07
   21.06  21.33  21.48  21.18  21.4   21.09  20.5   20.31  20.12  19.8
   19.97]
 [ 21.51  21.23  20.55  20.08  20.05  20.78  21.17  24.77  21.17  20.95
   21.43  21.47  21.46  21.77  21.69  21.13  20.47  20.04  20.08  20.37
   20.14]
 [ 21.29  21.1   20.63  20.32  20.22  20.37  24.4   23.82  22.23  21.03
   22.11  22.62  22.71  22.37  21.73  21.35  21.03  20.67  20.58  20.89
   20.93]
 [ 21.24  21.04  20.68  20.56  20.76  20.91  24.26  23.75  23.28  21.26
   21.48  22.    21.94  21.78  21.36  21.14  20.96  20.92  21.1   21.19
   21.31]
 [ 20.83  20.88  20.6   20.87  21.01  21.91  22.33  22.21  21.74  20.66
   20.76  20.73  21.04  21.09  20.83  20.7   20.72  20.71  21.23  21.04
   20.73]
 [ 20.32  20.41  20.19  20.05  20.68  22.17  21.82  20.67  19.85  19.02
   18.91  19.6   20.15  20.64  20.64  20.09  19.81  19.76  19.9   19.94
   19.46]
 [ 19.68  20.37  20.56  20.68  20.93  21.28  21.24  20.33  20.7   20.
   18.72  18.94  19.56  19.57  19.83  19.74  19.17  18.53  18.1   18.72
   19.12]
 [ 18.88  19.71  20.77  20.81  20.32  21.58  20.96  21.33  21.2   20.17
   19.95  22.05  19.72  19.85  19.3   18.75  18.69  18.44  17.57  17.2
   18.22]
 [ 19.11  19.19  20.13  20.78  21.25  21.98  21.15  20.96  20.66  20.14
   20.51  21.92  20.36  20.27  19.    18.22  17.81  17.58  17.16  16.67
   17.46]
 [ 18.5   19.28  19.57  20.01  21.16  21.01  21.06  20.93  20.62  19.89
   20.3   20.7   19.7   19.76  18.24  17.    16.36  16.63  17.62  17.32
   17.38]
 [ 17.6   18.33  20.27  19.97  20.63  20.51  21.09  21.39  20.81  19.55
   20.    18.3   17.32  18.24  17.57  17.15  16.42  15.76  16.14  16.45
   21.95]
 [ 17.04  17.55  18.16  18.32  21.23  20.5   20.41  19.82  20.7   20.55
   20.41  18.47  18.05  17.63  17.11  15.6   16.02  15.46  14.29  13.88
   23.04]]
最后,当我试图用这条线在地图上绘制上面的值时,我得到了这个错误

pylab.plot(x, y, temperature)

    'Unrecognized character %c in format string' % c)
ValueError: Unrecognized character [ in format string
问题似乎是nparray到字符串的转换


非常感谢您为解决此问题提供的任何帮助。

您使用
ax.annotate的原始解决方案非常适合您更通用的解决方案。唯一需要更改的是,对于2d数组,在使用
np.ravel()
(这也是
ndarray
类的一种类方法)对其进行循环之前,需要将其展平

但是,在您的特定情况下,您可以通过
广播
来节省显式索引和使用
ravel()
,方法是将需要绘制的三个数组合并在一起:

import numpy as np
import matplotlib.pyplot as plt

# generate some dummy data
z,y = np.meshgrid(range(3),range(3))
n = np.random.random_integers(low=50,high=500,size=z.shape)

fig, ax = plt.subplots()
ax.scatter(z, y)

for zz,yy,txt in np.broadcast(z,y,n):
    ax.annotate(txt, (zz,yy))

请注意,
np.broadcast
的结果与我们使用的
zip(z.ravel(),y.ravel(),n.ravel())
的结果是一样的,有一个巨大的区别,
np.broadcast
创建了一个类似生成器的对象,因此它没有创建必要的大型数组(这是完美的)。

请您解释一下数据的结构好吗?你有一个每个像素都有温度值的规则矩阵吗?您能提供一些文件作为示例来进行一些测试吗?数据-->x-->y-->。第一个链接不是温度值,但数组长度相同。数据的结构是什么?为什么我会得到形状数组(178343)?我之前发布的工作示例如下。下面两行代码是“删除行的完整工作示例代码:-”您可以通过一个非常简单的示例看到我改进的问题。谢谢您的回答。工作完美。