python - 使用 ssh 在远程计算机上使用corner.py 禁用显示

标签 python ssh display

我一直在使用 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/

相关文章:

python - 列出元素而不手动指定它们

python - 通过本地 ssh 配置 (~/.ssh/config) 的 PyCharm SSH 隧道

linux - 通过 ssh 浏览(或下载)R vignettes

windows - 是否可以通过 ssh 进入 Windows(通过 cygwin sshd)并在登录的 Windows 用户桌面上启动程序?

javascript - 在html中显示react javascript

python - 训练集和测试集的随机森林回归精度不同

python - PyCharm 警告未解析的引用内置日期时间模块

python - 如何使用 hmmlearn 在 Python 中运行隐马尔可夫模型?

html - 背景图片显示不正确

css - block 不是内联的