Проблемы с обновлением Matplotlib 3D Scatter с помощью обратного вызова виджета Jupyter - PullRequest
0 голосов
/ 30 мая 2019

У меня есть список матриц с данными о положении, которые я хотел бы построить и циклически использовать, используя выпадающий список jupyter, но каждый раз, когда я вызываю функцию построения графика, он создает новую фигуру.

Я пробовал ax.cla () (и другие понятные функции) перед вызовом функции plot в обратном вызове jupyter, а также для определения фигуры и осей извне и просто их обновления.

idmtrxlist содержит список матриц с данными позиции

def plotbird(posdata):
    fig = plt.figure()
    ax = fig.add_subplot(111, projection='3d')
    x = posdata[:,1]
    y = posdata[:,2]
    z = posdata[:,3]
    ax.scatter(x, y, z, c='r', marker='o')
    ax.set_xlabel('X Label')
    ax.set_ylabel('Y Label')
    ax.set_zlabel('Z Label')



exec("a = widgets.Dropdown(options="+str(idmtrxlist)+",value='pos15',description='Task:',)")

def on_change(change):
    if change['type'] == 'change' and change['name'] == 'value': 
        exec("plotbird("+change['new']+")")
a.observe(on_change)
display(a)

Я ожидаю, что одна цифра будет обновляться каждый раз, когда она меняется

...