Учитывая трехмерный график поверхности в matplotlib, который описывается плоскостью в виде Z = a X + b y + d.Далее дан слайдер, с помощью которого должен контролироваться a-параметр Z.До сих пор я получил следующий код:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib.widgets import Slider
x = np.linspace(-1,1,10)
y = np.linspace(-1,1,10)
X,Y = np.meshgrid(x,y)
Z=0.12861723162963065*X + 0.0014024845304814665*Y + 1.0964608113924048
fig = plt.figure()
ax = fig.gca(projection='3d')
surf = ax.plot_surface(X, Y, Z)
ax_a = plt.axes([0.25, 0.1, 0.65, 0.03])
s_a = Slider(ax_a, 'A', 0.1, 30.0, valinit=5)
def update(val):
A = s_a.val
Z1=A*X + 0.0014024845304814665*Y + 1.0964608113924048
surf = ax.plot_surface(X, Y, Z1)
fig.canvas.draw_idle()
s_a.on_changed(update)
plt.show()
Он пока показывает начальную плоскость.Он также рисует новые плоскости, если ползунок перемещен.Однако он не удаляет старые плоскости на трехмерном графике.
Вопрос здесь заключается в следующем: как я могу «обновиться» до новой плоскости при каждом перемещении ползунка?
С уважением