Matplotlib清除绘图
在使用Matplotlib进行数据可视化时,有时候我们需要在绘图之后清除已经存在的绘图,重新绘制新的图形。这时候就需要用到Matplotlib提供的清除图形的方法。
1. 清除当前绘图
我们可以使用plt.clf()
方法来清除当前绘图,具体示例如下:
import matplotlib.pyplot as plt
# 绘制图形
plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Example Plot')
plt.show()
# 清除图形
plt.clf()
plt.show()
运行以上代码,我们可以看到第一次绘制的图形被清除,页面上不再有任何图形。
2. 清除指定轴
如果我们只想清除指定的轴,可以使用ax.clear()
方法来清除指定轴上的绘图,具体示例如下:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
# 绘制图形
ax.plot([1, 2, 3, 4], [1, 4, 9, 16])
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_title('Example Plot')
plt.show()
# 清除指定轴上的图形
ax.clear()
plt.show()
运行以上代码,我们可以看到只有指定的轴上的图形被清除,页面上其他绘图保持不变。
3. 清除全部绘图
除了清除当前绘图和指定轴上的绘图,我们还可以使用plt.close('all')
来清除全部绘图,具体示例如下:
import matplotlib.pyplot as plt
# 绘制图形1
plt.figure()
plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Example Plot 1')
# 绘制图形2
plt.figure()
plt.plot([1, 2, 3, 4], [1, 8, 27, 64])
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Example Plot 2')
plt.show()
# 清除全部绘图
plt.close('all')
Output:
运行以上代码,我们可以看到所有绘图都被清除,页面上不再有任何图形。
4. 清除指定图形
如果我们只想清除指定的图形,可以使用plt.close(fig)
来清除指定图形,具体示例如下:
import matplotlib.pyplot as plt
# 绘制图形1
fig1 = plt.figure()
plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Example Plot 1')
# 绘制图形2
fig2 = plt.figure()
plt.plot([1, 2, 3, 4], [1, 8, 27, 64])
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Example Plot 2')
plt.show()
# 清除指定图形
plt.close(fig1)
Output:
运行以上代码,我们可以看到只有指定的图形1被清除,页面上只剩下图形2。
5. 结合Subplot清除图形
当我们使用Subplot绘制多个子图时,有时候需要清除全部子图或者指定某一个子图。下面分别演示清除当前子图和全部子图的示例代码:
清除当前子图
import matplotlib.pyplot as plt
# 创建子图1
plt.subplot(1, 2, 1)
plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Subplot 1')
# 创建子图2
plt.subplot(1, 2, 2)
plt.plot([1, 2, 3, 4], [1, 8, 27, 64])
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Subplot 2')
# 清除当前子图
plt.clf()
plt.show()
Output:
清除全部子图
import matplotlib.pyplot as plt
# 创建子图1
plt.subplot(1, 2, 1)
plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Subplot 1')
# 创建子图2
plt.subplot(1, 2, 2)
plt.plot([1, 2, 3, 4], [1, 8, 27, 64])
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Subplot 2')
# 清除全部子图
plt.close('all')
通过以上示例代码,我们可以清除当前子图或者所有子图,方便重新绘制图形。
6. 清除Axes中的绘图
除了在Figure级别清除绘图,我们还可以在Axes级别清除绘图。示例如下:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
# 绘制图形1
ax.plot([1, 2, 3, 4], [1, 4, 9, 16])
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_title('Example Plot 1')
# 清除指定轴中的图形
ax.clear()
plt.show()
Output:
7. 清除特定元素
除了清除整个图形或者轴上的所有内容,我们还可以清除特定的元素,例如清除某个文本框。示例如下:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
# 添加文本框
txt = ax.text(0.5, 0.5, 'Hello World', fontsize=12)
# 清除文本框
txt.remove()
plt.show()
Output:
8. 结合实际数据的清除操作
在实际使用Matplotlib绘制图形时,我们可能需要对清除操作进行一些逻辑控制。下面演示一个简单的示例,根据数据的大小来确定是否清除图形。
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
y = np.sin(x)
# 绘制图形
plt.plot(x, y)
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Sin Curve')
plt.show()
# 根据条件决定是否清除图形
if y.mean() > 0:
plt.clf()
print('图形已清除')
else:
print('图形保留')
Output:
9. 清除图形并重新绘制
有时我们需要在清除图形之后重新绘制新的图形,可以通过以下示例代码实现:
import matplotlib.pyplot as plt
# 绘制图形1
plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Example Plot 1')
plt.show()
# 清除图形1
plt.clf()
# 绘制图形2
plt.plot([1, 2, 3, 4], [1, 8, 27, 64])
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Example Plot 2')
plt.show()
10. 清除图形并绘制新图形
有时候我们需要在清除当前图形的同时绘制新的图形,示例如下:
import matplotlib.pyplot as plt
# 绘制图形1
plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Example Plot 1')
plt.show()
# 清除图形1并绘制图形2
plt.clf()
plt.plot([1, 2, 3, 4], [1, 8, 27, 64])
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Example Plot 2')
plt.show()
通过以上示例代码,我们可以清除当前图形并绘制新的图形,使得图形的展示更加灵活。