使用这里的例子:https://matplotlib.org/3.1.0/gallery/widgets/buttons.html
尝试在3D系统中扩展系统,即在3D中绘制线条,其坡度由按钮控制。
代码段如下:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Button
from mpl_toolkits.mplot3d import Axes3D
slope_x = np.array([-4,-3,-2,-1,0,1,2,3,4])
slope_y = np.array([-4,-3,-2,-1,0,1,2,3,4])
fig = plt.figure()
ax = fig.gca(projection='3d')
plt.subplots_adjust(bottom=0.2)
z = np.arange(0.0, 1.0, 0.001)
x = slope_x[4] * z
y = slope_y[4] * z
l , = ax.plot(x, y, z, label='parametric curve')
class Index(object):
ind_x = 4
ind_y = 4
def x_up(self, event):
self.ind_x += 1
i = self.ind_x % len(slope_x)
xdata = slope_x[i] * z
l.set_xdata(xdata)
plt.draw()
def x_down(self, event):
self.ind_x -= 1
i = self.ind_x % len(slope_x)
xdata = slope_x[i] * z
l.set_xdata(xdata)
plt.draw()
def y_up(self, event):
self.ind_y += 1
i = self.ind_y % len(slope_y)
ydata = slope_y[i] * z
l.set_ydata(ydata)
plt.draw()
def y_down(self, event):
self.ind_y -= 1
i = self.ind_y % len(slope_y)
ydata = slope_y[i] * z
l.set_ydata(ydata)
plt.draw()
callback = Index()
axdown = plt.axes([0.7, 0.05, 0.1, 0.075])
axup = plt.axes([0.8, 0.05, 0.1, 0.075])
aydown = plt.axes([0.6, 0.05, 0.1, 0.075])
ayup = plt.axes([0.5, 0.05, 0.1, 0.075])
bxup = Button(axup, 'x_up')
bxup.on_clicked(callback.x_up)
bxdown = Button(axdown, 'x_down')
bxdown.on_clicked(callback.x_down)
byup = Button(axup, 'y_up')
byup.on_clicked(callback.y_up)
bydown = Button(axdown, 'y_down')
bydown.on_clicked(callback.y_down)
plt.show()
预期:带有4个按钮的交互式图形,所有按钮都起作用,即改变直线的坡度
输出:2个按钮甚至没有被检测到,并且所有按钮都不能正常工作
目前没有回答
相关问题 更多 >
编程相关推荐