【问题标题】:Need to use TkApp backend with matplotlib in Pyzo需要在 Pyzo 中使用带有 matplotlib 的 TkApp 后端
【发布时间】:2023-03-03 13:09:01
【问题描述】:

我正在尝试将实时质谱图放入我正在编写的程序中。到目前为止,我有一个简单的 GUI,为程序提供了基本功能。我还希望它有一个质谱的实时图,一个相当简单的 2D 条形图,大约有 10,000 个峰。我希望用户能够缩放和平移绘图,但 matplotlib 的默认后端真的很慢。我一直在阅读,其他后端可用,推荐使用 TkApp。我还希望它与 tkinter Python 3.3 兼容。

当我尝试更改后端时:

import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy

print(mpl.pyplot.get_backend())

mpl.pyplot.switch_backend('TkAgg')

plot = plt.plot([1, 2, 3, 4, 5, 6])
plt.show(plot)

print(mpl.pyplot.get_backend())

输出:

C:\pyzo2013c\lib\site-packages\matplotlib\mathtext.py:46: UserWarning: Due to a bug in pyparsing <= 2.0.0 on Python 3.x, packrat parsing has been disabled.  Mathtext rendering will be much slower as a result.  Install pyparsing 2.0.0 or later to improve performance.
  warn("Due to a bug in pyparsing <= 2.0.0 on Python 3.x, packrat parsing "
Qt4Agg
Traceback (most recent call last):
  File "C:\MyPyProgs\Sequencer\spectrum_plot.py", line 7, in <module>
    mpl.pyplot.switch_backend('TkAgg')
  File "C:\pyzo2013c\lib\site-packages\matplotlib\pyplot.py", line 124, in switch_backend
    _backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup()
  File "C:\pyzo2013c\lib\site-packages\matplotlib\backends\__init__.py", line 28, in pylab_setup
    globals(),locals(),[backend_name],0)
  File "C:\pyzo2013c\lib\site-packages\matplotlib\backends\backend_tkagg.py", line 11, in <module>
    import matplotlib.backends.tkagg as tkagg
  File "C:\pyzo2013c\lib\site-packages\matplotlib\backends\tkagg.py", line 2, in <module>
    from matplotlib.backends import _tkagg
ImportError: cannot import name _tkagg

我正在使用 Pyzo 包。作为修复的几个建议是安装 python3-matplotlib-tk 但是它找不到 pyzo,因为它是 python 的独立安装,所以不在注册表中。任何帮助将不胜感激。

谢谢

【问题讨论】:

    标签: python matplotlib tkinter


    【解决方案1】:

    首先,听起来 Pyzo 包缺少 pyparsing 依赖项,因此这可能是导致速度问题的原因之一。

    其次,从错误消息来看,您的matplotlib 似乎由于某种原因没有使用 Tk 支持进行编译。您可能想联系 Pyzo,看看他们是否知道这一点。

    作为一种解决方法,我建议首先从 python.org 安装 Python,然后访问 Christoph Gohlke 的 Python Extension Packages for Windows 存储库。如果您还没有遇到过它,它是一个非常庞大且非常最新的 Windows 科学和其他 Python 模块集合,打包为自安装 .exe 文件。许多软件包都链接到使用英特尔的数学内核库 (MKL) 编译的 NumPySciPy,这可以在重型应用程序中提供显着更好的性能。另一个好处是他在需要的地方提供了依赖信息,所以如果你访问 matplotlib 链接,它会显示你还需要下载哪些其他包。

    当您在那里时,我强烈建议您查看IPython,这是一个功能丰富的交互式 Python 开发环境。

    【讨论】:

    • 非常感谢您的迅速回复。我会尝试通知 Pyzo 的人,并且一定会查看您建议的其他选项。非常感谢:-)
    【解决方案2】:

    在 Pyzo 社区组的 Almar 的帮助下,我设法解决了这个问题。我在这里发布它是为了帮助其他可能有同样问题的人。

    所以首先要做的就是将pyzo添加到注册表中,这是通过运行pyzo_activate.exe来完成的。然后打开cmd,然后我对所有问题都回答了y。

    在此之后,我下载了 matplotlib 的兼容版本(以及推荐的 PyQtGraph),它们可以正常安装并将 pyzo 识别为 python 版本。现在,当运行问题中的代码时,会产生以下输出:

    C:\pyzo2013c\lib\site-packages\matplotlib\mathtext.py:46: UserWarning: Due to a bug in pyparsing <= 2.0.0 on Python 3.x, packrat parsing has been disabled.  Mathtext rendering will be much slower as a result.  Install pyparsing 2.0.0 or later to improve performance.
      warn("Due to a bug in pyparsing <= 2.0.0 on Python 3.x, packrat parsing "
    TkAgg
    TkAgg
    

    这意味着 matplotlib 的默认后端现在是 TkAgg。生成的绘图的平移/缩放控件平滑且响应迅速。

    【讨论】:

      猜你喜欢
      • 2020-12-10
      • 2019-03-08
      • 2021-10-18
      • 2017-05-13
      • 2020-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-02
      相关资源
      最近更新 更多