AttributeError: объект 'Path3DCollection' не имеет атрибута 'view_init' - PullRequest
0 голосов
/ 17 февраля 2020

Я пытаюсь сделать анимацию вращающегося трехмерного графика и пытался «воспроизвести» несколько кодов, которые я видел здесь, но всегда получаю ошибку атрибута. Во-первых, мое изображение сделано с использованием следующей строки ax= pp.figure().add_subplot(111, projection='3d').scatter(x, y, z, c=surface[:,3], s=75, cmap = 'jet', alpha=0.4)

Что, возможно, немного грязно, но я не знаком с matplotlib, однако при попытке использования различных кодов, найденных здесь и на других сайтах, я получаю различные ошибки атрибутов (я работаю в Юпитер, если это проблема). Попытка использовать

for angle in range(0, 360):
            ax.view_init(30)
            plt.draw()
            plt.pause(.001) 

throws "AttributeError: объект 'Path3DCollection' не имеет атрибута 'view_init'"

Однако используя:

    ax.view_init(azim=angle)
def different_function
   rot_animation = animation.FuncAnimation(ax, rotate, frames=np.arange(0,362,2),interval=100)
   rot_animation.save('path/rotation.gif', dpi=80, writer='imagemagick')

throws "AttributeError: ' Path3DCollection 'объект не имеет атрибута' canvas '". Я начинаю думать, что моя установка matplotlib прослушивается или что-то в этом роде.

1 Ответ

0 голосов
/ 26 февраля 2020

Если кому-то интересно, ответ должен был просто быть последовательным в том, какой / какой модуль я использовал для создания фигуры и осей, используя Axes3D для создания оси и ffmpeg в качестве модуля записи mov ie для сохранения анимации. хорошо. Окончательный код был по существу

def rotate(angle):
     ax = plt.gca()
     ax.view_init(elev=15, azim=angle)

def random3dplottingfunction() 
     #bunch of junk to generate the plot
     ax.scatter(x, y, z, c = surface[:,3], s=20, cmap = 'jet', alpha=0.65)
    animate= animation.FuncAnimation(fig, rotate, frames=range(0,360,1),interval=100)
    animate.save('animate'+str(top)+str(i)+'.mp4', fps=10)

Это сработало просто отлично.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...