我正在使用Python 2.7.6 32位和Matplotlib 1.3.1。
当我使用默认后端时,如本例所示,显示的是图:
import matplotlib.pyplot as plt
plt.plot(range(10))
plt.show()
当我尝试使用WebAgg时,MPL页面会自动加载,但没有任何数字:
import matplotlib
matplotlib.use('webagg')
import matplotlib.pyplot as plt
plt.plot(range(10))
plt.show()
我在Windows和Ubuntu上使用Firefox,Chrome和IE测试了这段代码,没有任何成功......
有人可以帮帮忙吗?提前谢谢!
答案 0 :(得分:1)
经过大量的搜索和测试后,我最终使用pip卸载Matplotlib,然后重新安装它(使用--upgrade命令,只是为了确定):
pip uninstall matplotlib
pip install matplotlib --upgrade
它有效!现在我可以在浏览器窗口看到WebAgg图了!
也许我没有正确安装Matplotlib ...
谢谢你的建议!
答案 1 :(得分:1)
更新到最新的开发版本Matplotlib-1.4.x。使用
在virtualenv中安装$ pip install -e git@github.com:matplotlib/matplotlib.git
然后OP的命令适用于所有平台。还有一个新的embedded webagg example in the matplotlib master branch on GitHub适用于我的所有系统(Windows-7x64,Ubuntu-14.14和Xubuntu-14.14)。
使用Matplotlib-1.3.1的OP命令,我得到混合结果,具体取决于我使用的平台。在一台机器上(Ubuntu-14.14),如果我使用sudo
执行OP的命令,我就能显示该数字:
$ sudo python
>>> import matplotlib
>>> matplotlib.use('webagg')
>>> import matplotlib.pyplot as plt
>>> plt.plot(range(10))
>>> plt.show()
这适用于virtualenv和matplotlib的Ubuntu发行版本。
在VMWare Player虚拟机(托管在Windows-7x64上的Xubuntu-14.14)上,我能够使用OP的命令显示该图,而不是 sudo
。在第三台(Windows-7x64)机器上,无论是否有管理员权限,我都无法使用OP的命令获得数字。我还将matplotlib.rcParams['webagg.port']
更改为8080和8000,但这也没有用。
在使用从发行版存储库安装的matplotlib的Ubuntu-14.14上,您将看到以下回溯:
File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_webagg.py", line 381, in get
'matplotlib.png'), 'rb') as fd:
IOError: [Errno 2] No such file or directory: '/usr/lib/pymodules/python2.7/matplotlib/mpl-data/images/matplotlib.png'
它与图像不出现的原因无关;此错误仅出现在machines-data文件夹不在matplotlib.backends.backend_webagg
预期位置的Linux机器上,但实际上在/usr/share/matplotlib/
中。具体来说,backend_webagg
正在寻找用作网络浏览器标签的favicon的文件matplotlib.png
,实际上即使Tornado找不到此文件,Tornado仍然会为该页面提供服务,但不幸的是它仍然会发出此错误。
如果你使用virtualenv,你将看不到favicon错误。
在Ubuntu-14.14和Windows-7x64机器上使用没有sudo
的Matplotlib-1.3.1,我得到了相同的#34;图1和#34;链接问题@allisonmuller在上面的评论中得到了。
答案 2 :(得分:0)
只是添加Mark Mikovski的答案,我发现如果您添加如下符号链接
cd /usr/lib/pymodules/python2.7/matplotlib /
ln -s / usr / share / matplotlib / mpl-data mpl-data
这似乎可以解决问题