matplotlib:如何刷新figure.canvas

2024-01-06

我不明白如何刷新FigureCanvasWxAgg 实例。这是示例:


import wx
import matplotlib
from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas
from matplotlib.figure import Figure

class MainFrame(wx.Frame): 
    def __init__(self): 
        wx.Frame.__init__(self, None, wx.NewId(), "Main") 
        self.sizer = wx.BoxSizer(wx.VERTICAL)

        self.figure = Figure(figsize=(1,2))
        self.axe = self.figure.add_subplot(111)
        self.figurecanvas = FigureCanvas(self, -1, self.figure)

        self.buttonPlot = wx.Button(self, wx.NewId(), "Plot")
        self.buttonClear = wx.Button(self, wx.NewId(), "Clear")

        self.sizer.Add(self.figurecanvas, proportion=1, border=5, flag=wx.ALL | wx.EXPAND)
        self.sizer.Add(self.buttonPlot, proportion=0, border=2, flag=wx.ALL)
        self.sizer.Add(self.buttonClear, proportion=0, border=2, flag=wx.ALL)
        self.SetSizer(self.sizer)

        self.figurecanvas.Bind(wx.EVT_LEFT_DCLICK, self.on_dclick)
        self.buttonPlot.Bind(wx.EVT_BUTTON, self.on_button_plot)
        self.buttonClear.Bind(wx.EVT_BUTTON, self.on_button_clear)

        self.subframe_opened = False

    def on_dclick(self, evt):
        self.subframe = SubFrame(self, self.figure)
        self.subframe.Show(True)
        self.subframe_opened = True

    def on_button_plot(self, evt):
        self.axe.plot(range(10), color='green')
        self.figurecanvas.draw()

    def on_button_clear(self, evt):
        if self.subframe_opened:
            self.subframe.Close()
        self.figure.set_canvas(self.figurecanvas)
        self.axe.clear()
        self.figurecanvas.draw()


class SubFrame(wx.Frame): 
    def __init__(self, parent, figure): 
        wx.Frame.__init__(self, parent, wx.NewId(), "Sub")
        self.sizer = wx.BoxSizer(wx.VERTICAL)
        self.figurecanvas = FigureCanvas(self, -1, figure)
        self.sizer.Add(self.figurecanvas, proportion=1, border=5, flag=wx.ALL | wx.EXPAND)
        self.SetSizer(self.sizer)

        self.Bind(wx.EVT_CLOSE, self.on_close)

    def on_close(self, evt):
        self.GetParent().subframe_opened = False
        evt.Skip()



class MyApp(wx.App):
    def OnInit(self):
        frame = MainFrame()
        frame.Show(True)
        self.SetTopWindow(frame)
        return True

app = MyApp(0)
app.MainLoop()    

我对以下操作顺序感兴趣:

  • 运行脚本
  • 调整主框架的大小
  • 按绘图按钮
  • 双击绘图
  • 按清除按钮

现在我的主框架图一团糟。如果我调整框架大小,它会正确重新绘制。我的问题是我应该在代码中添加什么才能在不调整大小的情况下做到这一点?

我所说的“混乱”是指这样的事情:

http://img227.imageshack.us/img227/5407/mess.png http://img227.imageshack.us/img227/5407/mess.png

提前致谢。


正如我在评论中所说,我不认为图形画布刷新是你的问题,事实上,我认为它正在做它应该做的事情(根据它的最后状态重新绘制自身[即,因为它在你的子图中]) 。我认为你的问题更多的是 wxFrame 不刷新。

解决此问题的最简单方法是使其在“清除”事件中自行调整大小。就像是:

def on_button_clear(self, evt):
    if self.subframe_opened:
        self.subframe.Close()
    self.figure.set_canvas(self.figurecanvas)
    self.axe.clear()
    self.figurecanvas.draw()  
    self.SetSize((self.Size[0],self.figurecanvas.Size[1]))

设置的大小将导致框架及其包含的所有控件被重新绘制。

也就是说,我认为在两个人物画布之间共享你的人物是危险的。通过以不同的组合单击/调整事物的大小,我能够产生一些严重的错误。有时,当子框架关闭时,您的图形会被垃圾收集,从而使其无法用于主框架。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

matplotlib:如何刷新figure.canvas 的相关文章

  • 如何避免使用 python 处理空的标准输入?

    The sys stdin readline 返回之前等待 EOF 或新行 所以如果我有控制台输入 readline 等待用户输入 相反 我想打印帮助并在没有需要处理的情况下退出并显示错误 而不是等待用户输入 原因 我正在寻找一个Pytho
  • 将非常大的Python列表输出保存到mysql表中

    我想将 python 生成的列表的输出保存在 mysql 数据库的表中 该表如下所示 mysql 中的 myapc8 表 https i stack imgur com 4B4Hz png这是Python代码 在此输入图像描述 https
  • 多处理中的动态池大小?

    有没有办法动态调整multiprocessing Pool尺寸 我正在编写一个简单的服务器进程 它会产生工作人员来处理新任务 使用multiprocessing Process对于这种情况可能更适合 因为工作人员的数量不应该是固定的 但我需
  • 按边距(“全部”)值列对 Pandas 数据透视表进行排序

    我试图根据 pandas 数据透视表中的行总和对最后一列 边距 aggrfunc 进行降序排序 我知道我在这里错过了一些简单的东西 但我无法弄清楚 数据框 数据透视表 WIDGETS DATE 2 1 16 2 2 16 2 3 16 Al
  • 是否可以从 Julia 调用 Python 函数并返回其结果?

    我正在使用 Python 从网络上抓取数据 我想使用这些数据在 Julia 中运行计算 是否可以在 Julia 中调用该函数并返回其结果 或者我最好直接导出到 CSV 并以这种方式加载数据 绝对地 看PyCall jl https gith
  • 使用 Django 将文件异步上传到 Amazon S3

    我使用此文件存储引擎在上传文件时将文件存储到 Amazon S3 http code welldev org django storages wiki Home http code welldev org django storages w
  • 使用 Paramiko 进行 DSA 密钥转发?

    我正在使用 Paramiko 在远程服务器上执行 bash 脚本 在其中一些脚本中 存在与其他服务器的 ssh 连接 如果我只使用 bash 不使用 Python 我的 DSA 密钥将被第一个远程服务器上的 bash 脚本转发并使用 以连接
  • 在 python pandas 中,如何保存“网格图”?

    我对 pandas 绘图工具很陌生 在文档中 以下命令非常方便 myplot rts ret hist bins 50 by rts primary mic 然而 当我尝试从图中获取图形参考并保存它时 问题就出现了 myfigure myp
  • AttributeError:“模块”对象没有属性[重复]

    这个问题在这里已经有答案了 我有两个 python 模块 a py import b def hello print hello print a py print hello print b hi b py import a def hi
  • Spark 和 Python 使用自定义文件格式/生成器作为 RDD 的输入

    我想问一下 Spark 中输入的可能性 我可以看到从http spark apache org docs latest programming guide html http spark apache org docs latest pro
  • 从 Flask 运行 NPM 构建

    我有一个 React 前端 我想在与我的 python 后端 API 相同的源上提供服务 我正在尝试使用 Flask 来实现此目的 但我遇到了 Flask 找不到我的静态文件的问题 我的前端构建是用生成的npm run build in s
  • 使用另一个数据帧在数据帧中创建子列

    我对 python 和 pandas 很陌生 在这里 我有一个以下数据框 did features offset word JAPE feature manual feature 0 200 0 aa 200 200 0 200 11 bf
  • 可以使用哪些技术来衡量 pandas/numpy 解决方案的性能

    Question 如何简洁全面地衡量下面各个功能的性能 Example 考虑数据框df df pd DataFrame Group list QLCKPXNLNTIXAWYMWACA Value 29 52 71 51 45 76 68 6
  • 如何将带有参数的Python装饰器实现为类?

    我正在尝试实现一个接受一些参数的装饰器 通常带有参数的装饰器被实现为双重嵌套闭包 如下所示 def mydecorator param1 param2 do something with params def wrapper fn def
  • minizinc python 安装

    我通过 anaconda 提示符在 python 上安装了 minizinc 就像其他软件包一样 pip install minizinc 该软件包表示已成功安装 我可以导入该模块 但是 我正在遵循基本示例https minizinc py
  • 如何给URL添加变量?

    我正在尝试从网站收集数据 我有一个 Excel 文件 其中包含该网站的所有不同扩展名 F i www example com example2 我有一个脚本可以成功从网站中提取 HTML 但现在我想为所有扩展自动执行此操作 然而 当我说 s
  • 带 Flask 的 RPI dht22:无法将第 4 行设置为输入 - 等待 PulseIn 消息超时

    我正在尝试制作一个 Raspberry Pi 3 REST API 使用 DHT22 提供温度和湿度 整个代码 from flask import Flask jsonify request from sds011 import SDS01
  • 如何编写一个接受 int 或 float 的 C 函数?

    我想用 C 语言创建一个扩展 Python 的函数 该函数可以接受 float 或 int 类型的输入 所以基本上 我想要f 5 and f 5 5 成为可接受的输入 我认为我不能使用if PyArg ParseTuple args i v
  • pandas 中数据帧中的随机/洗牌行

    我目前正在尝试找到一种方法来按行随机化数据框中的项目 我在 pandas 中按列洗牌 排列找到了这个线程 在 pandas 中对 DataFrame 进行改组 排列 https stackoverflow com questions 157
  • 如何使用 python 定位和读取 Data Matrix 代码

    我正在尝试读取微管底部的数据矩阵条形码 我试过libdmtx http libdmtx sourceforge net 它有 python 绑定 当矩阵的点是方形时工作得相当好 但当矩阵的点是圆形时工作得更糟 如下所示 另一个复杂问题是在某

随机推荐

  • 如何告诉 ProGuard 保留私有字段而不指定每个字段

    这是我的课 package com tools app holiday public class Holiday private String name private Calendar dateFrom Calendar getInsta
  • Git 从以前的提交范围创建分支?

    我有一个操作系统项目的一堆提交 我想将最后的 20 个提交提取到另一个分支 这样我就可以拉取请求 我怎么能这样做呢 原因是我可能有 150 次提交 但其中大部分都是为了更大的贡献 但尚未准备好 但下一个版本即将发布 Thanks 你可以这样
  • 如何在 mysql 中将 csv 文件导出到我的计算机

    我正在尝试将表以 csv 格式从远程服务器导出到我的台式计算机 我有这个代码 select from order into outfile C Users Sleep Shop Desktop MySQL Scripts outfile c
  • Scala 和 Java 的构建器库

    我需要一个可以从 Scala 和 Java 调用的构建器库 在 Scala 中使用默认的命名参数就足够简单了 但是我如何从 Java 调用这段代码呢 见下文 或者也许我应该使用两种语言都更通用的流畅 API Scala case class
  • Python:如何将输出捕获到文本文件? (现在仅捕获 530 行中的 25 行)

    我已经潜伏在 SO 上做了相当多的工作 并进行了大量的搜索和阅读 但我也必须承认 总的来说 我在编程方面是一个相对菜鸟 我正在努力边学边学 所以我一直在使用 Python 的 NLTK 在下面的脚本中 我可以让一切正常工作 除了它只写多屏幕
  • 为什么只允许动态方法跳过可见性检查?

    我正在移植使用的代码DynamicMethod广泛允许预编译 以获得更好的冷启动性能 我注意到DynamicMethod可以进行即时编译并在跳过可见性检查的情况下执行 这允许它们访问私有嵌套类型 但普通程序集不能 或者不能 我没有看到任何明
  • MVC3 远程属性 - 验证

    我有一个班级管理员 public class Admin public virtual int AdminId get set Remote UsernameAvailable Admins Display Name lblUsername
  • 当其他未缓冲的查询处于活动状态时,PDO 无法执行查询

    我知道这必须是一个简单的修复 并且我部分理解为什么会出现此错误 但不知道如何修复它 我查看了文档 但除了使用缓冲查询选项之外找不到其他解决方案 我也尝试过 但它不起作用 错误是 当其他未缓冲的查询处于活动状态时 PDO 无法执行查询 该错误
  • 跨域资源共享(CORS)概念

    我对跨域 JavaScript 的概念有疑问 有一个服务器 例如 amazon com 只有选定的域才能使用其网络服务 所以肯定的是 如果我尝试从本地使用他们的服务 我就不能 我在控制台上看到了这个 跨源请求被阻止 同源策略不允许读取 远程
  • git commit 对象数据结构的文件格式是什么?

    上下文 我希望能够搜索我的 git 提交消息和提交 而不必执行令人费解的复杂 git grep 命令 所以我决定看看 git 提交消息是如何存储的 我查看了 git 文件夹 在我看来 提交存储在 git objects git 对象文件夹包
  • ImageJ - 如何导入和显示网格?

    如何在 ImageJ 上打开并显示网格 使用 obj stl 或 dxf 格式 我尝试通过 file open 打开文件 但使用3DViewer http rsbweb nih gov ij plugins 3d viewer or the
  • Three.js 设备方向控制在加载时指向特定目标

    我正在使用 Three js 中的设备方向控件为 Google Cardboard 设置 Web 应用程序 当我加载场景时 相机的默认目标是Y方向 手机上的Z方向 那里可能没有任何物体 我想在加载之前定义一个方向 有人对如何做到这一点而不需
  • jquery 的多个 setinterval 问题

    我正在为以下代码执行 setInterval 单击按钮后 我必须一一执行以下操作 show VM started vmstart setInterval function get getVMstatus function data if d
  • 在 Websphere Portal 8 中以编程方式显式注销用户并重定向到默认登录页面

    我对 WS 门户有点陌生 并且有一个要求 其中在特定场景中我们希望用户注销并将其重定向到默认门户登录页面 我已经尝试过使会话无效清除cookies并执行response sendRedirect 如下所示响应 sendRedirect wp
  • 当用户在 Chromium 中打开新选项卡时运行指定的函数

    我想从 Chromium 的 新标签 页面中删除访问量最大的缩略图 检查该页面的内容后 我确定以下 JavaScript 行可以解决问题 document getElementById most visited remove 但我仍然有一个
  • 获取 std::wstring 的子字符串

    我怎样才能得到a的子串std wstring其中包含一些非 ASCII 字符 以下代码不会输出任何内容 文本是一个阿拉伯单词 包含 4 个字符 每个字符有两个字节 加上单词 Hello include
  • 为什么堆栈跟踪行号与源代码行号不匹配?

    我的应用程序因设备上的 NPE 崩溃 在 ACRA 收到的堆栈跟踪中 行号指的是两个源代码类 SQLiteStatement and SQLiteDatabase For SQLiteDatabase 没有任何行号与任何源代码版本中的行号匹
  • Log4j2 与 apache Ivy 依赖管理无法解析 log4j-api-java9

    当尝试将 apache log4j2 与 ivy 构建管理工具一起使用时 在尝试解决依赖项时出现以下错误 problems summary WARNINGS module not found org apache logging log4j
  • 检索 POJO 外部容器中的 servlet 上下文、会话和请求

    有没有办法从 POJO 检索会话 或者最终从 POJO 中检索 bean 澄清 基本上 我从 servlet 创建一个 bean 并且需要从 Web 容器外部 从 POJO 访问该 bean 的属性 我无法将请求传递给 pojo 并且需要请
  • matplotlib:如何刷新figure.canvas

    我不明白如何刷新FigureCanvasWxAgg 实例 这是示例 import wx import matplotlib from matplotlib backends backend wxagg import FigureCanvas