2015-11-16 24 views
6

私はPython(matlabから来ている)に比較的新しいです。 1つのプロジェクトとして、時間の経過とともに相関行列のアニメーション化されたプロットを作成しようとしています。プロットを素敵にするために、私はシーボーンを試しています。私は(Macのmatplotlibのバックエンドに問題が)アニメーションがすべてで行わばかり苦労しますが、非常に基本的なアニメーションは、今ウェブからこのコードを使用して動作します。seabornアニメートヒートマップ/相関行列

import numpy as np 
from matplotlib import pyplot as plt 
from matplotlib import animation 

nx = 50 
ny = 50 

fig = plt.figure() 
data = np.random.rand(nx, ny) 
im = plt.imshow(data) 

def init(): 
    im.set_data(np.zeros((nx, ny))) 

def animate(i): 
    #xi = i // ny 
    #yi = i % ny 
    data = np.random.rand(nx, ny) 
    im.set_data(data) 
    return im 

anim = animation.FuncAnimation(fig, animate, init_func=init, frames=50, repeat = False) 

は、今私はseabornにこれを適応しようとしていたが、成功しなかった。シーボーンはサブプロット上で動作し、これらをアニメーション化するのははるかに困難だったようです。私が一番気に入ったのは一種の再帰的なプロットでした。そこでは、海軍の熱地図がお互いの上にプロットされていました。また、im.set_dataメソッドは使用できませんでした。 どのような提案も高く評価されています。 ありがとうございます。

ベスト、ラルフ。

+0

シーボーンを使用するコードを見ると便利でしょうか? – mwaskom

答えて

2

良い点、mwaskom(snsのすべての仕事のおかげで!) - それは私が立ち往生しているところです。私はseborn.heatmapでplt.imshow(set_data didnt workを使ってデータをキャスト)を置き換えました。

fig = plt.figure() 
data = np.random.rand(nx, ny) 
sns.heatmap(data, vmax=.8, square=True) 

def init(): 
     sns.heatmap(np.zeros((nx, ny)), vmax=.8, square=True) 

def animate(i): 
    data = np.random.rand(nx, ny) 
    sns.heatmap(data, vmax=.8, square=True) 

anim = animation.FuncAnimation(fig, animate, init_func=init, frames=20, repeat = False) 

これは再帰的なプロットを作成します。助けてくれてありがとう、作図するのがきれいになりました。 ベスト、ラルフ。

+1

私はちょうど解決策を見つけたと思います:animate-functionの最初の行にplt.clf()を入れてください!ありがとう、ラルフ。 –