PyCharm matplotlib 交互式图形而不阻塞执行

2024-05-06

我阅读了很多有关该主题的堆栈溢出问题,但经过大量实验后我无法弄清楚我的问题。

我在 Windows 7 上使用 PyCharm 2016.3.2(但在 OSX 上也有同样的问题),我的解释器是带有 Python 3.6 和 matplotlib 2.0.0 的 Anaconda 的最新版本。

这是我试图实现的目标(也许我没有使用正确的方法,因为我试图重新创建我在 Octave/Matlab 中习惯的行为):

  1. 在弹出窗口中绘制一个图形
  2. 暂停我的脚本(输入(“按某个键继续”))
  3. 观察图形,然后按某个键继续脚本
  4. 计算其他东西
  5. 在同一图上绘制新数据
  6. 暂停我的脚本(输入(“按某个键继续”))
  7. 观察图形,然后按某个键继续脚本

这是我的测试代码:

import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt

print('Plotting Data...')

plt.ion()
plt.figure(1)
plt.plot([1, 5, 10, 20], [1, 5, 10, 20])
plt.xlabel('x label')
plt.ylabel('y label')
plt.show()
plt.pause(0.0001)

input('Plotting Data done..., Press a key to continue')

plt.figure(1)
plt.plot([1, 5, 10, 20], [2, 10, 20, 40])
plt.show()
plt.pause(0.0001)

input('Program paused. Press enter to end.\n')

这是我想要的最接近的版本,绘图是正确的,但当我将鼠标悬停在它们上方时没有响应(plt.pause(0.0001)生成警告但代码有效)。

我经常使用参数(plt.ion() ; plt.pause() ; plt.show(block=False))。 大多数时候,这会导致绘图窗口为空,或者我需要关闭窗口才能继续执行。

感谢您的帮助 !


Once plt.show()称为主循环由窗口接管。因此,一旦inputget 被调用后,主循环变得无响应。

您可以尝试留在 GUI 循环中并在那里处理按键。

import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt

print('Plotting Data...')

fig, ax = plt.subplots()
ax.set_xlabel('x label')
ax.set_ylabel('y label')
i=[0]

def f1():
    ax.plot([1, 5, 10, 20], [1, 5, 10, 20])

def f2():
    ax.plot([1, 5, 10, 20], [2, 10, 20, 40])

def f3():
    ax.plot([1, 5, 10, 20], [5, 9, 17, 28])


def update(event=None):
    if i[0]==0: f1()
    if i[0]==1: f2()
    if i[0]==2: f3()
    fig.canvas.draw_idle()
    i[0]+=1
    print('Step {} done..., Press a key to continue'.format(i[0]))

fig.canvas.mpl_connect("key_press_event", update)    

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

PyCharm matplotlib 交互式图形而不阻塞执行 的相关文章

随机推荐

  • 单元测试(有时)会因为浮点不精确而失败

    我有课Vector代表 3 维空间中的一个点 这个向量有一个方法normalize self length 1 将矢量缩小 放大为length vec normalize length length 该方法的单元测试有时由于浮点数的不精确性
  • 日期时间值如何存储在mysql中?

    我是数据库世界的新手 我正在从 java 程序发送一个日期时间值 例如 2016 04 27 09 00 00 以便将其保存到 mysql 数据库中 我的问题是如何将该值保存到 mysql 数据库表中的日期时间类型字段中 我的意思是 它是否
  • 将 pandas 数据框中的所有 inf、-inf 值替换为 NaN

    我有一个大型数据框 不同列中包含 inf inf 值 我想用 NaN 替换所有 inf inf 值 我可以逐栏这样做 所以这有效 df column name df column name replace np inf np nan 但我的
  • NumPy 数组中负数和正数岛的计数

    我有一个包含负元素块和正元素块的数组 一个更简单的例子是一个数组a看起来像 array 3 2 1 1 2 3 4 5 6 5 4 a lt 0 sum and a gt 0 sum 给我消极和积极元素的总数 但我如何按顺序计算它们 我的意
  • 类似于eternity的C++对象持久化库

    我正在寻找一个 C 对象持久库来替换永恒图书馆 http sourceforge net projects eternity it 我已经用它制作了大约一天的原型 永恒图书馆的能力不足 我创建了一个与此类似的对象层次结构 我有一个std l
  • 从后台应用程序启动活动

    我的应用程序在后台运行 我希望当运行下面的代码时该应用程序显示在 Android 手机的顶部 启动 我知道代码肯定会运行 这似乎是一件简单的事情 但我在这个网站上花了几个小时 每个人似乎都在建议这样的事情 Intent intent new
  • Angular js ng-view 渲染事件

    我如何知道 ng view 何时完全渲染 目前我尝试使用 scope on viewContentLoaded function scope on routeChangeSuccess function angular element do
  • 时间:2019-01-09 标签:c#decimaltoString()转换与逗号(,)

    c decimal toString 转换问题 Example 我有一个十进制值 1 当我使用 toString 将十进制转换为字符串时 它返回 0 10 它返回 COMMA 而不是 DOT 我相信这与您的操作系统设置的文化 地区有关 您可
  • hive查询无法通过jdbc生成结果集

    我是 Hive 和 Hadoop 的新手 在我的教程中 我想将表创建为 import java sql SQLException import java sql Connection import java sql ResultSet im
  • 如何在java中执行复合sql查询?

    如何执行以下查询并通过准备好的语句检索结果 INSERT INTO vcVisitors sid VALUES SELECT LAST INSERT ID 有没有办法同时执行这两个语句 我尝试执行以下操作 Connection con Db
  • Google Sheets - 如何将过滤功能与过滤视图结合起来

    我一直在处理一个包含 100 多行的电子表格 并发现了一种巧妙的方法来合并 隐藏 复选框 该复选框将隐藏 C 列与框旁边指定的特定值 建筑类型 匹配的任何行 为此 我首先创建了一个如下函数 FILTER Data A1 OR Data C1
  • IE 中的表格布局错误(7)

    下面是一个带有表格布局的简单 html 代码 在 FF 中 它看起来就像我认为的那样 在 IE7 中则不然 我究竟做错了什么 我该如何解决它 table cellspacing 0 cellpadding 0 border 1 tbody
  • Android - 如何通过检查已发送的项目来确定电子邮件是否已发送

    我有一个应用程序 我使用意图发送电子邮件 如下所示 TODO attach and send here try Log i getClass getSimpleName send task start String address emai
  • 如果字符串中的第一个字符是逗号,则删除它

    我需要在 javascript 中设置一个函数来删除字符串的第一个字符 但前提是它是逗号 我找到了substr函数 但这将删除任何内容 无论它是什么 我当前的代码是 text value newvalue substr 1 text val
  • 我可以将 UIScrollView 放入另一个 UIScrollView 中吗

    我有一个UIScrollView仅在垂直方向滚动 我需要放置UIScrollView它可以水平移动 就像苹果设备中的AppStore应用程序一样 我不想我们UICollectionView因为我有静态数据并且我只需 3 个水平UIScrol
  • Window.AllowsTransparent 设置为 true 时 wpf 中的运行时错误

    当我设置时 我在运行时抛出异常AllowsTransparency True 我得到一个例外 说WindowStyle不能设置为None if AllowsTransparency设置为 true 即使我明确地说WindowStyle被设定
  • LINQ:根据列值选择重复行

    我试图在我的 DataGrid 中显示那些共享相同列值的行 例如 对于具有相同姓氏的人 我尝试了以下方法 dataGrid ItemsSource dataContext Addresses GroupBy a gt a SurName W
  • 将 fill_ Between() 与 Pandas 数据系列一起使用

    我已经绘制了 使用 matplotlib 时间序列及其相关的置信区间上限和下限 我在 Stata 中计算的 我使用 Pandas 读取 stata csv 输出文件 因此该系列的类型为 pandas core series Series M
  • 我们如何读取给定时间范围内的Kafka主题?

    我需要读取 Kafka 主题中给定时间范围内的消息 我能想到的解决方案是首先找出时间范围开始的最大偏移量 然后继续消费消息 直到所有分区上的偏移量超过时间范围的末尾 有没有更好的方法来解决这个问题 谢谢 好吧 您肯定必须首先搜索适合时间范围
  • PyCharm matplotlib 交互式图形而不阻塞执行

    我阅读了很多有关该主题的堆栈溢出问题 但经过大量实验后我无法弄清楚我的问题 我在 Windows 7 上使用 PyCharm 2016 3 2 但在 OSX 上也有同样的问题 我的解释器是带有 Python 3 6 和 matplotlib