matplotlib面向对象接口删除axvspan报错

我用matplotlib面向对象接口删除指定的axvspan时会报错:
AttributeError: ‘Axes’ object has no attribute ‘delaxes’
但是我用matplotlib.pyplot就可以正常删除指定的axvspan.

可以帮忙看下matplotlib面向对象接口怎么删除指定的axvspan

#面向对象接口删除指定的axvspan报错
import matplotlib.pyplot as plt

fig, ax = plt.subplots()

x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = [10, 5, 8, 3, 4, 6, 9, 3, 2, 4]
ax.plot(x, y)
a = ax.axvspan(0.8, 1.2, facecolor='g', alpha=0.5)
b = ax.axvspan(2.8, 3.2, facecolor='y', alpha=0.5)
c = ax.axvspan(4.8, 5.2, facecolor='r', alpha=0.5)
d = ax.axvspan(6.8, 7.2, facecolor='b', alpha=0.5)
ax.delaxes(a)
ax.delaxes(c)
plt.show()
#matplotlib.pyplot可以正常删除指定的axvspan
import matplotlib.pyplot as plt
a = plt.axvspan(0.8, 1.2, facecolor='g', alpha=0.5)
b = plt.axvspan(2.8, 3.2, facecolor='y', alpha=0.5)
c = plt.axvspan(4.8, 5.2, facecolor='r', alpha=0.5)
d = plt.axvspan(6.8, 7.2, facecolor='b', alpha=0.5)
plt.delaxes(a)
plt.delaxes(c)

plt.show()
最佳答案

在Matplotlib的面向对象接口中,要删除指定的axvspan,你应该使用remove()方法而不是delaxes()方法。delaxes()方法用于删除整个子图,而不是特定的axvspan

以下是使用面向对象接口删除指定的axvspan的正确示例代码:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()

x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = [10, 5, 8, 3, 4, 6, 9, 3, 2, 4]
ax.plot(x, y)
a = ax.axvspan(0.8, 1.2, facecolor='g', alpha=0.5)
b = ax.axvspan(2.8, 3.2, facecolor='y', alpha=0.5)
c = ax.axvspan(4.8, 5.2, facecolor='r', alpha=0.5)
d = ax.axvspan(6.8, 7.2, facecolor='b', alpha=0.5)
a.remove()
c.remove()
plt.show()

在这里,我们使用remove()方法从ax对象中删除指定的axvspan。然后,通过调用plt.show()来显示图形。

请注意,remove()方法是用于从Axes对象中删除艺术家对象的通用方法,可用于删除不同类型的艺术家对象,包括axvspanaxhspanLine2D等。

7个月前 评论
讨论数量: 1

在Matplotlib的面向对象接口中,要删除指定的axvspan,你应该使用remove()方法而不是delaxes()方法。delaxes()方法用于删除整个子图,而不是特定的axvspan

以下是使用面向对象接口删除指定的axvspan的正确示例代码:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()

x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = [10, 5, 8, 3, 4, 6, 9, 3, 2, 4]
ax.plot(x, y)
a = ax.axvspan(0.8, 1.2, facecolor='g', alpha=0.5)
b = ax.axvspan(2.8, 3.2, facecolor='y', alpha=0.5)
c = ax.axvspan(4.8, 5.2, facecolor='r', alpha=0.5)
d = ax.axvspan(6.8, 7.2, facecolor='b', alpha=0.5)
a.remove()
c.remove()
plt.show()

在这里,我们使用remove()方法从ax对象中删除指定的axvspan。然后,通过调用plt.show()来显示图形。

请注意,remove()方法是用于从Axes对象中删除艺术家对象的通用方法,可用于删除不同类型的艺术家对象,包括axvspanaxhspanLine2D等。

7个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!