Удаление 3DCollection из Pyplot

avatar
greyson-newton
8 августа 2021 в 17:42
32
0
0

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

from mpl_toolkits.mplot3d.art3d import Poly3DCollection,Line3DCollection
from mpl_toolkits.mplot3d import art3d
from matplotlib import cm
import numpy, weakref
ion()
fig = plt.figure(figsize=[30,26])
ax = fig.add_subplot(111, projection='3d')
data=[50. 0. 0. 0. 0. 0. -20. 0. 0. 0. 0. 0. 10. 10. "AUTO",.0000001]
tbma =alignment(data)

des_vertices = tbma.design_chamber.plot_pts()
act_vertices = tbma.actual_chamber.plot_pts()
# https://mathematica.stackexchange.com/questions/189338/removing-some-of-the-box-in-a-plot3d
ax.set(xlabel ='Z-Axis', ylabel ='Y-Axis', zlabel='X axis',
       xlim =(-20,20), ylim =(-20, 20), zlim=(0, 60),
       title ='TBMA')
ax.get_xaxis().set_visible(False)
ax.get_zaxis().set_visible(True)

des=ax.plot_trisurf(des_vertices[2], des_vertices[1], des_vertices[0], cmap=cm.jet, linewidth=0.2,alpha=0.2)
act=ax.plot_trisurf(act_vertices[2], act_vertices[1], act_vertices[0], cmap=cm.magma, linewidth=0.2,alpha=0.4)
track =ax.plot(tbma.muon.plot_pts()[0], tbma.muon.plot_pts()[1], tbma.muon.plot_pts()[2],linewidth=1.)
print(type(des))
# pause(3)
for iteration in range(2):
    # act.pop(0).remove()
    tbma.simulate()
    # actual.cla()
    # track.cla()
    pause(2)    
    track.pop(0).remove()
    act_vertices=tbma.actual_chamber.plot_pts()
    act.cla()
    act=ax.plot_trisurf(act_vertices[2], act_vertices[1], act_vertices[0], cmap=cm.magma, linewidth=0.2,alpha=0.4)
    track =ax.plot(tbma.muon.plot_pts()[0], tbma.muon.plot_pts()[1], tbma.muon.plot_pts()[2],linewidth=1.)
    draw()

Как удалить из рисунка графики "действие" или "дес"? Я пробовал delete(act), act.cla(),act.clear().. Я бы предпочел не отключать видимость 3DCollection, ее нужно удалить для экономии памяти. Спасибо за любую помощь, ребята!

Источник
sai
8 августа 2021 в 22:50
0

Функция alignment отсутствует, код не может быть запущен

greyson-newton
16 августа 2021 в 19:07
0

Приношу свои извинения, полную кодовую базу можно найти на github по адресу git@github.com:greyson-newton/tbma_simulator.git — запустите файл выравнивания, чтобы запустить программу! Благодарю вас!

Ответы (0)