【发布时间】:2019-09-25 16:46:55
【问题描述】:
我一直在使用 ssh 在远程机器上创建绘图。当我使用 matplotlib 时,我可以使用matplotlib.use("PDF") 保存图形并避免显示它们。我现在正在使用corner.py API 创建一个绘图,但我想不出类似的方法来避免显示该图形。 (我没有明确要求在任何地方显示该图。)
错误可以通过以下方式重新创建:
import corner
import numpy as np
# Random data
ndim, nsamples = 3, 1000
np.random.seed(42)
samples = np.random.randn(ndim * nsamples).reshape([nsamples, ndim])
# Make figure
figure = corner.corner(samples)
figure.savefig('test.pdf')
我的第一个错误是
_tkinter.TclError: 没有显示名称,也没有 $DISPLAY 环境变量。
我尝试将export DISPLAY=localhost:0.0 添加到我的 .bashrc 文件中,但后来得到了
_tkinter.TclError: 无法连接以显示“localhost:0.0”。
我尝试过figure.ioff(), plt.close(figure),并使用ssh -X remoteMachine,但我不断收到类似的错误。
我不需要也不想显示图,我只想保存它。
【问题讨论】:
-
在我的脑海里,你可以运行
xvfb并按照Setting DISPLAY variable with Xvfb - CentOS 将DISPLAY 设置为它的屏幕。但如果没有minimal reproducible example,我无法针对您的特定情况进行测试。 -
感谢您的反馈。我现在添加了一个示例来说明是什么给了我错误。
-
因为他们的建议是使用 matplotlib.use('Agg'),我理解这与我使用 matplotlib.use('PDF') 类似,你知道这将如何转化为使用角落而不是matplotlib?