通过vscode的SSH隧道打开Matplotlib图形

h22fl7wq  于 2022-12-19  发布在  Vscode
关注(0)|答案(6)|浏览(445)

我正在设置一个远程工作站,以便在另一台包含GPU的计算机上从我的笔记本电脑运行机器学习相关的Python代码。
我使用vscode的SSH远程特性来远程运行和调试我的代码,我对界面非常满意。但是,我无法生成来自"matplotlib"库的图形。
我尝试修改一些matlplotlib选项,但没有成功:

import matplotlib
matplotlib.use('Agg')

如以下文件所示:_tkinter.TclError: no display name and no $DISPLAY environment variable
简而言之,我的问题出现在下面的示例代码中:
x一个一个一个一个x一个一个二个x
谢谢你帮我!

woobm2wo

woobm2wo1#

我发现前面的答案的一个微小的变化工作得很好。
将打印保存为.png,而不是打印。
plt.savefig("dummy_name.png")
前面的答案建议通过scp移动文件。我建议用Visual Code打开dummy_name.png,不需要写命令,它会在你绘制其他东西时自动刷新图像。我在美国用SSH测试了这个,在欧洲的服务器上,图像刷新不到半秒。

gudnpqoy

gudnpqoy2#

我设法解决了这个问题,方法是运行一个启用X11转发的并行Putty ssh连接,并在启动python脚本之前在vscode的终端中写入export DISPLAY=localhost:10.0
然而,我有安全方面的考虑,我想知道为什么我必须手动做这些命令,以便它的工作...任何见解将不胜感激!

sh7euo9m

sh7euo9m3#

为了方便配置,您有2个选项:
1.不显示绘图,通过SSH传输图片文件
此选项包括将plt.show()替换为

plt.savefig('foo.png')
plt.savefig('foo.pdf')

More information关于保存matplotlib
之后,您可以使用scp传输此数字

scp remote_username@10.10.0.2:/path/to/foo.png /local/directory

1.使用Jupyter笔记本
您可以轻松地绘制到Jupyter Notebook中。下面是a tutorial,介绍如何通过ssh设置树莓派,为Jupyter Notebook创建远程服务器。
在Jupyter Notebook上,在导入matplotlib之前,需要在笔记本的第一行添加,以便在单元格之后绘制图像。

%matplotlib inline
2skhul33

2skhul334#

另一种方法是使用Tensorboard,现在可以通过VS代码中的扩展来使用它。您可以保存图像或绘图(以及其他类型的数据),并通过VS代码选项卡中的Tensorboard界面立即查看它。我一直通过ssh使用它。但是,您确实需要Tensorflow或Pytorch来完成此操作。
下面是一个在Pytorch中的numpy.array或torch.tensor格式的图像示例。请确保首先启动您的Tensorboard会话。

from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter('log_dir')    

# for some image "im"
writer.add_image('My image', im, 0)
write.close()

以下是matplotlib图形的示例:

def examplePlot(data):
    fig = plt.figure()
    # do some plotting
    return fig

writer.add_figure('My plot', examplePlot(data), 0)
writer.close()

刷新你的Tensorboard,你应该马上看到它。

smtd7mpg

smtd7mpg5#

你也可以使用pickle来哑的文件在服务器上,然后重新绘制他们在本地之一。你可以使用“SCP”来复制原始数据到您的本地机器。有时它的帮助,因为你可以有实时互动的绘图。我下面这2个链接:
1.保存绘图数据python matplotlib save graph as data file
1.使用SCP Copying files from server to local computer using SSH复制

x6492ojm

x6492ojm6#

我建议创建一个新的笔记本并运行这个笔记本中的python文件,这对我来说是最好的。

相关问题