使用滑块重绘平面

时间:2018-10-19 15:06:09

标签: python matplotlib slider mplot3d

给出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图中的旧平面。

这里的问题是:无论何时移动滑块,如何才能“更新”到新平面?

最诚挚的问候

0 个答案:

没有答案