给出matplotlib中的3D表面图,该图由一个平面以Z = a X + b y + d的形式描述。还给出了通过其应控制Z的a参数的滑块。到目前为止,我得到了以下代码:
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()
到目前为止,它一直在绘制初始平面。如果移动滑块,它还将绘制新的平面。但是,它不会删除3D图中的旧平面。
这里的问题是:无论何时移动滑块,如何才能“更新”到新平面?
最诚挚的问候