python - 让 matplotlib 图刷新鼠标焦点

标签 python matplotlib

我在交互模式下使用 matplotlib 并执行计算,比如一个包含许多步骤的优化,我在每个步骤绘制中间结果以用于调试目的。这些图通常会填满屏幕并在很大程度上重叠。

我的问题是,在计算过程中,部分或完全遮挡的图形在我单击它们时不会刷新。它们只是一片空白的灰色。

我想当我点击一个图形时,如果需要的话,强制重绘,否则显示它是没有用的。目前,我在代码中插入了 pdb.set_trace(),这样我就可以停下来并单击所有数字以查看发生了什么

有没有办法强制 matplotlib 在获得鼠标焦点或调整大小时重新绘制图形,即使它正在忙着做其他事情?

最佳答案

这样的东西可能对你有用:

import matplotlib.pyplot as plt
import numpy as np

plt.ion() # or leave this out and run with ipython --pylab

# draw sample data
fig = plt.figure()
ax = fig.add_subplot(111)
line, = ax.plot(np.random.rand(10))

class Refresher:
    # look for mouse clicks
    def __init__(self, fig):
        self.canvas = fig.canvas
        self.cid = fig.canvas.mpl_connect('button_press_event', self.onclick)

    # when there is a mouse click, redraw the graph
    def onclick(self, event):
        self.canvas.draw()

# remove sample data from graph and plot new data. Graph will still display original trace
line.remove()
ax.plot([1,10],[1,10])

# connect the figure of interest to the event handler 
refresher = Refresher(fig)
plt.show()

每当您单击图形时,这将重新绘制图形。

您还可以尝试其他事件处理,例如

  • ResizeEvent - 调整图形 Canvas 的大小
  • LocationEvent - 鼠标进入新图形

查看更多here :

关于python - 让 matplotlib 图刷新鼠标焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8225460/

相关文章:

python - 如何更改 DEFAULT CURRENT_TIMESTAMP 格式

python - 更改seaborn分布线的颜色

python - 在 PyQt 中使用 matplotlib 的段错误

Python Flask Swagger Flasgger 下载 Excel

python - xmpppy 连接到 gtalk 时出错

python - 如何使用 matplotlib 创建自定义 python 图表

python-2.7 - Python-一个窗口中有多个3D图

Python matplotlib : plot3D with a color for 4D

python - tkinter columconfigure 和 rowconfigure

python - 使用 pandas 绘制 Bokeh 线图的问题