axes.spines
является OrderedDict
. Когда вы перебираете Dict
или OrderedDict
следующим образом:
for key in axes.spines:
print(type(key))
Вы перебираете ключи, которые являются строками и не имеют метода обновления. Здесь вы можете увидеть, какие параметры можно установить с помощью plt.setp()
, просто передав итерируемый объект или подобный объект.
plt.setp(axes.spines)
Возвращает None
, поскольку оно ссылается на ключи, которые являются строками и не имеют метода обновления. Вдоль этой строки логики c, если мы попробуем это:
plt.setp(axes.spines.values())
, мы увидим, что это возвращает возможные аргументы. Таким образом, в итоге, изменение plt.setp(axes.spines, visible=False)
на plt.setp(axes.spines.values(), visible=False)
удалит все шипы, так как он выполняет итерацию по объектам, а не по ключам.
Полный код:
import matplotlib.pyplot as plt
x = range(0,10)
y = [i*i for i in x]
plt.plot(x,y) #Plotting x against y
axes = plt.gca() #Getting the current axis
axes.spines['top'].set_visible(False)
plt.setp(axes.spines.values(), visible=False)
plt.show() #Showing the plot