python - 更新 matplotlib 注释位置而不重绘所有数据
问题描述
我基本上在我的自定义 pyplot 图形工具上重新创建了 matlab 数据光标。它允许拖动和左/右箭头键来更新注释框沿线的位置等。我的问题来自于有大量行时。数据光标仍然可以工作,但拖动它的位置是一场噩梦,而且速度非常慢。我相当肯定,问题源于我的 canvas.draw() 调用,因为每次数据光标移动时它都会重绘整个图形。
我正在努力实现像 blit() 和“restore_region()”这样的选项,但我在实现它们时遇到了很大的困难。任何人都可以提供如何使这项工作的外壳吗?由于代码本身的分类,我无法包含实际代码,但我可以给出一个小的伪代码示例。
def create_anno(self):
# Do annotation creation stuff here
self.background = self.figure.canvas.copy_from_bbox(self.axis.bbox)
def key_press(self):
self.figure.canvas.restore_region(self.background)
# Do update position/text stuff here
self.figure.canvas.blit(self.axis.bbox)
self.figure.canvas.flush_events()
key_press 函数正常调用,但是注释框不再移动。大多数示例在其 restore_region() 和 blit() 调用之间使用 draw_artist() ,但注释没有。我只想更新一个小注释框在图形中的位置,而不必重新绘制整个轴。有任何想法吗?
谢谢!
解决方案
推荐阅读
- javascript - angular.copy 不复制具有子对象或数组的对象
- php - 在我的情况下,有效地检查从给定日期时间是否正好过去了 2 天
- python - 在 tkinter 中选择对 JPG 文件执行特定操作的文件夹
- javascript - 在 Chrome 中工作,但在 Safari 中中断:无效的正则表达式:无效的组说明符名称 /(?<=\/)([^#]+)(?=#*)/
- javascript - 如何在 json 响应中不存在的 jquery 数据表中再添加一列
- laravel - 在用户模型中传递 ID
- oracle - 在所有 oracle 包中查找带引号和双引号的字符串
- javascript - redux-form mapStateToProps TypeError:无法读取未定义的属性“值”,即使我可以控制台记录状态对象并查看值
- javascript - 如何在 ASP.NET MVC 5 中将我的 viewbag 内容(一个巨大的表)从视图传递到控制器
- css - React - 始终选择媒体查询 CSS 样式