Код: Выделить всё
# Plot
fig, ax = plt.subplots(1, 1)
levels = np.arange(-14, 3, dtype=float)
colors = ['grey' for i in range(len(levels))]
cs = ax.contour(X, Y, Z, levels=levels, colors=colors)
# Print the levels to check the exact content
ax.clabel(cs, cs.levels, inline=False, manual=label_positions)
# show
plt.show()
plt.close()
Однако на самом деле мне хотелось пометить только подмножество уровней, сохраняя при этом контурные линии, отображаемые для каждого уровня. Поэтому я изменил код так:
Код: Выделить всё
# Plot
fig, ax = plt.subplots(1, 1)
levels = np.arange(-14, 3, dtype=float)
colors = ['grey' for i in range(len(levels))]
cs = ax.contour(X, Y, Z, levels=levels, colors=colors)
# Print the levels to check the exact content
ax.clabel(cs, cs.levels[2:], inline=False, manual=label_positions[2:])
# show
plt.show()
plt.close()
Почему я получил эту ошибку? Я думал, что это будет более продвинутая реализация.
FYI level — это пустой массив с 17 элементами, а label_positions — это (17,2) пустой массив ( Я также пробовал использовать список из 17 кортежей, но это дало ту же ошибку). Печать этих двух массивов дает
Код: Выделить всё
# print variable length
print('levels: \n'+str(levels)+'\n')
print('label_positions:\n '+str(label_positions)+'\n')
Подробнее здесь: https://stackoverflow.com/questions/791 ... -ax-clabel