正是 Headers 所说的 . 有没有办法在不安装TCL的情况下使用matplotlib库?请不要't tell me to bite the bullet and install TCL - I know how to do it but for my own (ok maybe silly) reasons I don'吨 .
我不关心显示图,我只想在png中输出它们 . 我尝试了各种各样的东西(使用不同的后端等)但matplotlib总是想找到tcl工作:(为什么TCL对matplotlib如此重要?
此外,请注意我正在使用Windows - 我已经安装了所有可能需要的东西(numpy,pandas,matplotlib)使用pip .
@ gerrit的解决方案是正确的(我试图改变后端但是我在加载pyplot之后就这样做了 - 重要的是你需要在使用matplotlib之后立即更改后端) . 这是一个使用它的小例子:
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
fig, ax = plt.subplots( nrows=1, ncols=1 )
ax.plot([0,1,2], [10,20,3])
fig.savefig('foo.png')
plt.close(fig)
这将输出一个名为'foo.png'的文件而不使用TCL \ o /
1 回答
Matplotlib 3.0及更新版本
(已于2018年10月补充回答)
从2018年9月19日发布的Matplotlib 3开始,问题中描述的问题不应该发生 . 来自what's new part of the documentation:
因此,只要您确定未定义DISPLAY,在无头Linux服务器上运行脚本时,不应该遇到后端的任何问题 .
Matplotlib 2.2及更早版本
(原答案2016年5月)
加载matplotlib后立即输入
在加载
pyplot
之前执行此操作,如果有的话 .默认情况下,Matplotlib使用
TkAgg
后端,后端需要Tcl . 如果您不想显示图表,Agg
就可以了 . 其他替代方案包括WX
和QTAgg
,但两者都需要安装其他库 .或者,您可以在
matplotlibrc
文件中设置此指令:有关详细信息,请参阅Matplotlib Usage FAQ在什么是后端?