在不清除滑块的情况下清除Matplotlib图

时间:2020-05-22 15:26:59

标签: python matplotlib ipywidgets

我当前正在创建一个需要更新matplotlib图形的应用程序。我陷入了下一步。
我在同一图中有一个散点图和一个滑块。更改滑块值后,我需要清除散点图而不清除滑块。以下是我实现的代码,但无法清除剧情。 .clf()函数同时删除滑块和散点图。有什么方法可以只删除图而不会影响滑块吗?

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider


X1=np.arange(10)
Y1=np.arange(10)
Z1=np.arange(10)
fig,ax=plt.subplots()
ax=plt.scatter(X1,Y1,Z1)

axSlider1=plt.axes([0.3,0.9,0.3,0.05])
Slder2=Slider(ax=axSlider1,label='Slider',valmin=1,valmax=4,valinit=2)

plt.show()

# Function to clear the scatter plot without effecting slider.
def val_update(val):
    plt.cla()

Slder2.on_changed(val_update)

1 个答案:

答案 0 :(得分:0)

fig,ax=plt.subplots()

将轴对象分配给ax-然后

ax=plt.scatter(X1,Y1,Z1)

将PathCollection对象分配给ax。因此,val_update倾向于对错误的事情采取行动。

这似乎可以解决您所询问的问题。

X1=np.arange(10)
Y1=np.arange(10)
Z1=np.arange(10)
fig,ax=plt.subplots()
path=plt.scatter(X1,Y1,Z1)

axSlider1=plt.axes([0.3,0.9,0.3,0.05])
Slder2=Slider(ax=axSlider1,label='Slider',valmin=1,valmax=4,valinit=2)


# Function to clear the scatter plot without effecting slider.
def val_update(val):
    print(val)
    ax.clear()

Slder2.on_changed(val_update)

plt.show()

Matplotlib Gallery是很好的资源,您可以浏览它以查找所需的功能并查看其功能。 -像这样slider demo

如果您认为将来会使用matplotlib,我建议您按照入门tutorials以及至少是Artists教程的方式进行操作