【问题标题】:Animated color grid based on mouse click event基于鼠标点击事件的动画颜色网格
【发布时间】:2018-01-14 02:34:23
【问题描述】:

我希望创建一个颜色网格,它接受一些原始用户输入,例如:定义的脚本运行时间、随机信号数、样本数和标准化 0 或 1。按下鼠标时,其中一个列或框应变为红色,指示“HIGH”,而其他框/列保持蓝色、黄色或绿色。

到目前为止,我有以下代码,但除了能够显示示例颜色网格之外,我没有取得任何进展。我可以采取哪些步骤来执行原始输入并生成随机信号?

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))

【问题讨论】:

    标签: python numpy matplotlib colors signal-processing


    【解决方案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))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-11
      • 1970-01-01
      • 1970-01-01
      • 2017-01-05
      • 1970-01-01
      相关资源
      最近更新 更多