我正在尝试使用以下代码在单个图上绘制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)])
因为当我注释掉这两行时,错误信息不会显示出来。但我仍然不知道导致这两行错误的问题是什么。 我仍然无法绘制我想要的数字。我能得到的是
我认为数据已经绘制在图上,因为当我将鼠标放在图表上时,x和y的值将显示在屏幕上。我真的不知道情节不会出现的确切原因。
答案 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)
。