Niektóre metody seaborn
, takie jak create new figures on each call. Dzięki temu niemożliwe jest utworzenie prostej animacji, takiej jak w przypadku matplotlib
, w której wielokrotne wywołania do plt.cla()
lub plt.clf()
umożliwiają aktualizowanie zawartości figury bez zamykania/otwierania okna za każdym razem.Przerysowywanie liczb Seaborn dla animacji
Jedynym rozwiązaniem Obecnie widzę to:
for t in range(iterations):
# .. update your data ..
if 'jp' in locals():
plt.close(jp.fig)
jp = sns.jointplot(x=data[0], y=data[1])
plt.pause(0.01)
To działa, ponieważ zamykamy poprzedniego okna tuż przed utworzeniem nowego. Ale oczywiście nie jest to idealne.
Czy istnieje lepszy sposób? Czy działka może zostać wykonana bezpośrednio na wcześniej wygenerowanym obiekcie Figure
? A może istnieje sposób, aby zapobiec tym metodom generowania nowych liczb przy każdym wywołaniu?
ja podejrzewać coś takiego. Chciałbym, żeby było to bardziej proste, ale to ładnie wykonuje pracę, więc dziękuję bardzo. – runDOSrun
Z kodu źródłowego seaborn widać, że wyraźnie nie został napisany z myślą o animowaniu wątków. W zależności od tego, jaki jest ostateczny cel, oczywiście można dokonać pewnych optymalizacji; Zastanawiam się nad podklasą JointGrid, aby była ona bardziej podatna na aktualizacje, umieszczając to w nowym module i wywołując go w razie potrzeby - jednak miałoby to sens tylko wtedy, gdyby trzeba było częściej wykonywać takie animacje. Należy również pamiętać, że seaborn w większości owija matplotlib, tak że rozwiązaniem może być replikacja tego, co jointplot robi wyłącznie z matplotlib. – ImportanceOfBeingErnest