2017-02-03 2 views
0

Я пытаюсь построить 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

Попробуйте 'ax.set_xticks (диапазон (1,1001,50))' без дополнительного списка. – ImportanceOfBeingErnest

+0

Это работает !! Большое спасибо!! Я потратил часы на это! T.T –

ответ

2

Ошибка возникает по линии ax.set_xticks([range(1,1001,50)]), которая создает список внутри списка. Вместо этого используйте ax.set_xticks(range(1,1001,50)).

То, что вы не видите линии, может быть вызвано тем, что линии не находятся внутри диапазона просмотра. Это связано с тем, что диапазон просмотра не автомасштабирует художников внутри осей.

Возможно, вы захотите установить лимиты, ax.set_ylim(-1,1) сперва.

 Смежные вопросы

  • Нет связанных вопросов^_^