您实际上忽略了发条所需的大部分功能。见例如
- 为什么用Matplotlib绘制这么慢?
- Matplotlib / PyPlot中的快速实时绘图
和往常一样
- 画画布
fig.canvas.draw()
- 保存背景以备后用,
fig.canvas.copy_from_bbox()
- 更新要点,
point.set_data
- 恢复背景,
fig.canvas.restore_region
- 指出要点,
ax.draw_artist
- 咬住轴
fig.canvas.blit
因此
import matplotlib.pyplot as pltimport numpy as npclass Test: def __init__(self): self.fig = plt.figure(1) # Axis with large plot self.ax_large = plt.subplot(121) self.ax_large.imshow(np.random.random((5000,5000))) # Follow the point self.ax = plt.subplot(122) self.ax.grid(True) # set some limits to the axes self.ax.set_xlim(-5,5) self.ax.set_ylim(-5,5) # Draw the canvas once self.fig.canvas.draw() # Store the background for later self.background = self.fig.canvas.copy_from_bbox(self.ax.bbox) # Now create some point self.point, = self.ax.plot(0,0, 'go') # Create callback to mouse movement self.cid = self.fig.canvas.callbacks.connect('motion_notify_event', self.callback) plt.show() def callback(self, event): if event.inaxes == self.ax: # Update point's location self.point.set_data(event.xdata, event.ydata) # Restore the background self.fig.canvas.restore_region(self.background) # draw the point on the screen self.ax.draw_artist(self.point) # blit the axes self.fig.canvas.blit(self.ax.bbox)tt = Test()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)