Matplotlib plt.figure()在Ubuntu上引发TCLError(依赖于X资源)

时间:2016-05-10 01:09:44

标签: python matplotlib tkinter x11

Matplotlib安装

我使用官方存储库已经安装了matplotlib很长一段时间,直到今天仍然没有问题。使用plt.figure()会在TKAgg后端引发错误,但任何其他后端都会无缝地工作(Qt4AggAgg已经过测试)。我的两个安装都使用以下内容:

sudo apt-get install python-matplotlib python3-matplotlib

我还有几个virtualenv安装的matplotlib(使用无全局),在每个环境中使用Python2或3安装matplotlib。

代码段

以下是我的virtualenv安装和系统安装中产生错误的基本代码段:

import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
plt.figure()
plt.axvline(x=1)
plt.show()

系统安装错误

现在,如果我在系统安装(Python2或3)上运行上面的代码片段,我会得到:

  plt.figure()
File "/usr/lib/python2.7/dist-packages/matplotlib/pyplot.py", line 435, in figure
  **kwargs)
File "/usr/lib/python2.7/dist-packages/matplotlib/backends/backend_tkagg.py", line 81, in new_figure_manager
  return new_figure_manager_given_figure(num, figure)
File "/usr/lib/python2.7/dist-packages/matplotlib/backends/backend_tkagg.py", line 109, in new_figure_manager_given_figure
  figManager = FigureManagerTkAgg(canvas, num, window)
File "/usr/lib/python2.7/dist-packages/matplotlib/backends/backend_tkagg.py", line 537, in __init__
  self.toolbar = NavigationToolbar2TkAgg( canvas, self.window )
File "/usr/lib/python2.7/dist-packages/matplotlib/backends/backend_tkagg.py", line 682, in __init__
  NavigationToolbar2.__init__(self, canvas)
File "/usr/lib/python2.7/dist-packages/matplotlib/backend_bases.py", line 2679, in __init__
  self._init_toolbar()
File "/usr/lib/python2.7/dist-packages/matplotlib/backends/backend_tkagg.py", line 736, in _init_toolbar
  command=getattr(self, callback))
File "/usr/lib/python2.7/dist-packages/matplotlib/backends/backend_tkagg.py", line 716, in _Button
  master=self, text=text, padx=2, pady=2, image=im, command=command)
File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 2163, in __init__
  Widget.__init__(self, master, 'button', cnf, kw)
File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 2093, in __init__
  (widgetName, self._w) + extra + self._options(cnf))
_tkinter.TclError: unknown color name "rgba:0000/0000/0000/dddd"

VirtualEnv错误

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File ".../local/lib/python2.7/site-packages/matplotlib/pyplot.py", line 109, in <module>
    _backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup()
  File ".../local/lib/python2.7/site-packages/matplotlib/backends/__init__.py", line 32, in pylab_setup
    globals(),locals(),[backend_name],0)
  File ".../local/lib/python2.7/site-packages/matplotlib/backends/backend_tkagg.py", line 13, in <module>
    import matplotlib.backends.tkagg as tkagg
  File ".../local/lib/python2.7/site-packages/matplotlib/backends/tkagg.py", line 7, in <module>
    from matplotlib.backends import _tkagg
ImportError: cannot import name _tkagg

其他信息

的/ etc / matplotlibrc

#### CONFIGURATION BEGINS HERE
backend      : TkAgg
  

Ubuntu版本:15.10

     

系统Python版本:2.7.10和3.4.3 +

     

System Matplotlib版本:1.4.2

     

VirtualEnv Python版本:2.7.9

     

VirtualEnv Matplotlib版本:1.4.3

〜/ Xresources中

*foreground:     rgba:0000/0000/0000/dddd
*background:     rgb:10/10/10

Stack Overflow类似问题

我也看了下面的问题,但没有找到解决我问题的方法。我不能简单地删除我的VM,因为这是我正在使用的个人计算机。此外,我认为我的问题独立于Anaconda(我安装了Anaconda,但我没有使用它,所有这些Python可执行文件都不是来自Anaconda安装程序)。

matplotlib backend_tkagg TclError matplotlib example code throws TclError TclError matplotlib 1.5.0

问题

在保留我的X资源配置的同时,有没有人有任何建议来修复上述错误?我修复了使用Matplotlib的程序(Chimera)中的先前错误,该程序通过修改我的XResources配置引发了不同的TCLError。同样,清除我的XResources配置似乎解决了这个问题,但是,因为我已经有近一年的~/.Xresources文件了,我发现这不太可能是原因,并且还想保持我的颜色配置。

注释掉上面定义的两行,然后使用xrdb ~/.Xresources重新加载我的配置解决了这个问题,但我宁愿不必重新定义我的X配置。

0 个答案:

没有答案