尽管使用搜索功能,我一直无法找到答案 . 我有两个假设,但不知道他们可以适用多远 . 现在的问题是:
我想绘制一个轮廓 . 为此,我在这里得到以下python代码:
import numpy as np
import matplotlib.pyplot as plt
xi=list_of_distance
yi=list_of_angle
x = np.arange(0,54,0.2)
y = np.arange(0,180,2.0)
Z = np.histogram2d(xi,yi,bins=(274,90))
X, Y = np.meshgrid(x, y)
plt.contour(X,Y,Z)
plt.ylabel('angles')
plt.xlabel('distance')
plt.colorbar()
plt.show()
xi和yi是包含浮点值的列表 . x和y定义'interval'...例如:x生成一个列表,其值为0到54,步长为0.2 y生成一个列表,其值为0到180,步长为2.0
使用Z我利用numpy函数创建2D直方图 . 实际上这似乎是导致麻烦的地方 .
调用函数plt.contour(X,Y,Z)时,会出现以下错误消息:
...文件“/usr/lib/pymodules/python2.7/numpy/ma/core.py”,第2641行,in new _data = np.array(data,dtype = dtype,copy = copy,subok = True ,ndmin = ndmin)ValueError:使用序列设置数组元素 .
现在假设可能导致这个问题:
- 好像它需要一个数组,而不是一个numpy数组,它接收一个列表
要么
- 我们得到的排比其他人短(我想到的是,在一年前同事遇到这样的问题之后 - 通过弄清楚最后一行是比其他所有人短2个元素来解决这个问题...)
2 回答
正如@rocksportrocker所暗示的,您需要考虑
histogram2d
除了直方图之外还返回边 . 另一个细节是您可能希望明确传入范围,否则将根据数据中的实际最小值和最大值为您选择一个 . 然后,您需要将边缘转换为绘图的单元格中心 . 像这样的东西:产生一个像这样的countour图:
但我个人不会在这种情况下使用轮廓,因为直方图可能会很吵 .
你的回溯表明错误没有从调用matplotlib引起,它是numpy引发了ValueError .