gpt4 book ai didi

python - 让 matplotlib 图刷新鼠标焦点

转载 作者:太空狗 更新时间:2023-10-30 00:18:08 28 4
gpt4 key购买 nike

我在交互模式下使用 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com