无法在地图

时间:2017-02-03 08:56:39

标签: python matplotlib plot

我正在尝试使用以下代码在单个图上绘制1000个线段

corr1 = [round(pic.autocorr(i),4) for i in range(1,1001)]

index = range(1,1001)
y_points = zip(index, corr1)
x_points = zip(index, [ 0 for i in range(1,1001)])

line_collection = []

for i in range(0,1000):
    temp = []
    temp.append(x_points[i])
    temp.append(y_points[i])
    line_collection.append(temp)

lc = mc.LineCollection(line_collection, color = 'r', linewidth = 1)
fig, ax = plt.subplots(figsize = (20,6))
ax.cla()
ax.add_collection(lc)
ax.set_ylabel('autocorrelation')
ax.set_xlabel('lag')
ax.set_xticks([range(1,1001,50)])
ax.set_yticks([ x/10.0 for x in range(-10, 11,1)])
plt.show()

我得到的是错误信息,如

ValueError: The truth value of an array with more than one element is     ambiguous. Use a.any() or a.all()

我认为错误是由这两行造成的

ax.set_xticks([range(1,1001,50)])
ax.set_yticks([ x/10.0 for x in range(-10, 11,1)])

因为当我注释掉这两行时,错误信息不会显示出来。但我仍然不知道导致这两行错误的问题是什么。 我仍然无法绘制我想要的数字。我能得到的是 enter image description here

我认为数据已经绘制在图上,因为当我将鼠标放在图表上时,x和y的值将显示在屏幕上。我真的不知道情节不会出现的确切原因。

1 个答案:

答案 0 :(得分:2)

错误由行ax.set_xticks([range(1,1001,50)])生成,它在列表中创建一个列表。请改用ax.set_xticks(range(1,1001,50))

您看不到线条的事实可能是由于线条不在观看范围内。这是因为观看范围不会自动缩放到轴内的艺术家。

因此,您可能需要先设置限制ax.set_xlim(1,951)ax.set_ylim(-1,1)