手动调用matplotlib的绘制

时间:2016-03-02 00:22:18

标签: python matplotlib

我有以下代码示例。当我按下按钮时,颜色会发生变化。但是只有在我移动鼠标之后。我可以以某种方式直接调用绘图函数吗?

import matplotlib.pyplot as plt
from matplotlib.widgets import Button

def toggle(_):
    button.status ^= True

    color = [0, 1, 0] if button.status else [1, 0, 0]
    button.color = color
    button.hovercolor = color

    # Stuff that doesn't work...
    plt.draw()
    button.canvas.draw()
    plt.gcf().canvas.draw()


button = Button(plt.axes([.1, .1, .8, .8]), 'Press me')
button.status = True
button.on_clicked(toggle)

plt.show() 

1 个答案:

答案 0 :(得分:1)

我确信有一种“官方”方式可以做你想做的事情,但这里有一个模拟鼠标动作事件的黑客将触发重绘。在button.canvas.motion_notify_event(0,0)末尾添加toggle(),以便您的代码如下所示:

import matplotlib.pyplot as plt
from matplotlib.widgets import Button

def toggle(_):
    button.status ^= True

    color = [0, 1, 0] if button.status else [1, 0, 0]
    button.color = color
    button.hovercolor = color

    button.canvas.motion_notify_event(0,0)

button = Button(plt.axes([.1, .1, .8, .8]), 'Press me')
button.status = True
button.on_clicked(toggle)

plt.show()