Как сохранить колчан - PullRequest
       9

Как сохранить колчан

0 голосов
/ 17 марта 2020

Позвольте мне показать вам мой код

array['fieldv'].shape
(112, 750, 750, 2)

, и если я построю график элемента, появится это изображение

%matplotlib inline
U, V  = array['fieldv'][10,:,:,0], array['fieldv'][10,:,:,1]
plt.quiver(U[::4,::4], V[::4, ::4])

enter image description here

Теперь мой вопрос: как я могу сохранить в каталоге все колчаны из 112 элементов? Я показываю вам мой код, который не работает

%matplotlib inline

i = 0
while i != len(array['fieldv'][0]):
    U, V  = array['fieldv'][i:,:,0], array['fieldv'][i,:,:,1]
    fig = plt.quiver(U[::4,::4], V[::4, ::4])

    filename = '/home/rr/workspace/TEST/OUTPUT/vectorf/'
    fig.savefig(filename + 'TEST_' + str(i) + '.png')
    i += 1

1 Ответ

1 голос
/ 17 марта 2020

plt.quiver не возвращает экземпляр Figure (отметьте type(fig), и вы увидите, что plt.quiver фактически создает экземпляр Quiver). У объекта Quiver нет метода savefig, поэтому fig.savefig не будет работать. Тем не менее, вы должны просто иметь возможность поменять команду fig.savefig на plt.savefig.

. В качестве более общего комментария я думаю, что здесь более целесообразно использовать для l oop, а не время Постулаты. Я бы сделал это как for i in range (array['fieldv'].shape[0]):. Я также думаю, что .format немного аккуратнее: plt.savefig('{}TEST_{}.png'.format(filename, i)).

Сложив все это, я бы сделал:

filename = '/home/rr/workspace/TEST/OUTPUT/vectorf/'

for i in range(array['fieldv'].shape[0]):
    U, V  = array['fieldv'][i:,:,0], array['fieldv'][i,:,:,1]
    Q = plt.quiver(U[::4,::4], V[::4, ::4])

    plt.savefig('{}TEST_{}.png'.format(filename, i))
...