2017-08-06 2 views
0

定義済みのスクリプト実行時間、ランダム信号数、サンプル数、正規化0または1のような生のユーザー入力が必要なカラーグリッドを作成しようとしています。マウスの場合、列またはボックスの1つは赤色に変わり、他のボックス/列は青色、黄色または緑色のままであるが、「高」を示す。マウスクリックイベントに基づくアニメーションカラーグリッド

これまでのところ、私は以下のコードを持っていますが、サンプルのカラーグリッドを表示することはできません。生の入力を実行してランダムな信号を生成するためには、どのようなステップを取ることができますか?

from pylab import arange, cm, draw, rand 
from matplotlib import pylab as plt 
from time import sleep 
import time 

start_time = time.time() 
plt.ion() 
a = arange(25) 
a = a.reshape(5,5) 
fig = plt.figure(figsize = (5, 5)) 
for i in range(100): 
    ax = fig.add_subplot(111) 
    b = 5*rand(5,5) 
    cax = ax.matshow(a-b, cmap=cm.jet, vmin = -10, vmax = 25) 
    if i == 0: 
     fig.colorbar(cax) 
    draw() 
    sleep(0.01) 
plt.show() 
print("--- %s seconds ---" %(time.time() - start_time)) 

答えて

1

使用fig.canvas.mpl_connect('button_press_event', update)ユーザがマウスをクリックするたびに呼び出されるコールバック関数(例えばupdate)を設定する:

import numpy as np 
from matplotlib import pyplot as plt 
import matplotlib.colors as mcolors 
import time 

start_time = time.time() 
def generate_data(): 
    a = np.arange(25).reshape(5, 5) 
    b = 10 * np.random.rand(5, 5) 
    result = a - b 
    n = result.size 
    np.put(result, np.random.randint(n), 25) 
    return result 

def update(event): 
    data = generate_data() 
    mat.set_data(data) 
    fig.canvas.draw() 
    return mat 

fig, ax = plt.subplots() 
mat = ax.matshow(generate_data(), cmap=plt.get_cmap('jet')) 
plt.colorbar(mat) 
fig.canvas.mpl_connect('button_press_event', update) 
plt.show() 
print("--- %s seconds ---" %(time.time() - start_time)) 
関連する問題