我一直在使用 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: no display name and no $DISPLAY environment variable.
我尝试将 export DISPLAY=localhost:0.0
添加到我的 .bashrc 文件中,但后来得到了
_tkinter.TclError: couldn't connect to display "localhost:0.0".
我尝试过 figure.ioff()、plt.close(figure)
和使用 ssh -X RemoteMachine
但我不断收到类似的错误。
我不需要或不想显示该图,我只是想保存它。
最佳答案
corner
uses matplotlib
as backend ,所以答案来自 Calling pylab.savefig without display in ipython此处适用 - 选择在内存中渲染的 matplotlib
后端:
import matplotlib
matplotlib.use('Agg')
import corner
<etc>
注意顺序:matplotlib
需要在 matplotlib.pyplot
或其他绘图相关模块导入之前调用 .use()
第一次;否则,它没有任何效果,并且会打印一个 UserWarning
来解释这一点。 corner.corner
module imports pyplot
right upon its import.
关于python - 使用 ssh 在远程计算机上使用corner.py 禁用显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56032472/