首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要在Pyzo中使用matplotlib的TkApp后端

需要在Pyzo中使用matplotlib的TkApp后端
EN

Stack Overflow用户
提问于 2014-01-15 15:43:19
回答 2查看 1.1K关注 0票数 0

我试着把一个真实的质谱图放进我正在编写的程序中。到目前为止,我有一个简单的GUI,使程序具有其基本功能。我还想要它有一个质谱的活图,一个非常简单的二维条形图,大约有10,000个峰值。我希望用户能够缩放和平移周围的情节,但是matplotlib的默认后端非常慢。我一直在阅读,其他后端是可用的,推荐使用TkApp。我还希望它与tkinterPython3.3兼容。

当我试图更改后端时:

代码语言:javascript
复制
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())

输出:

代码语言:javascript
复制
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的独立安装,所以不在注册表中。任何帮助都将不胜感激。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-16 14:33:04

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

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

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

代码语言:javascript
复制
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。所产生的绘图的pan/变焦控件是平滑和响应的。

票数 0
EN

Stack Overflow用户

发布于 2014-01-15 15:59:46

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

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

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

当您在那里时,我强烈建议您检查一下IPython,这是一个交互式的Python开发环境,功能太多了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21141811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档