前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VScode使用remote-ssh实现服务器上绘图可视化

VScode使用remote-ssh实现服务器上绘图可视化

原创
作者头像
叶子Tenney
发布2023-10-25 11:58:39
2.2K1
发布2023-10-25 11:58:39
举报
文章被收录于专栏:叶子的数据科技专栏

引言

有时候在服务器上绘图会受到结果不显示的困扰, 无论是R还是python都会有类似的情况, 那么有什么比较方便的应用呢?

本文的前提是你使用VScode并以安装好python等环境, 可以日常在服务器工作.

使用的方案是X协议, 详细介绍见4. 具体使用软件是MacOS的Quartz或Windows的Xming, Linux的xauth, VScode的插件remote X11和remote X11(ssh).

效果展示

过程

可视化方案

大概需要三个步骤:

  1. 安装本地X端(X client)
  2. 安装服务器X端(X Server)
  3. 安装和配置VScode插件

安装本地X端(X client)

MacOS

MacOS用的应用是Quartz, 可以直接从官网5下载, 也可以从brew下载.

一般情况都推荐brew, 但是我Ventura 13.0.1 (22A400)系统的Apple M1不可用, 所以尽量建议官网下载安装包, 安装之后记得重启一下.

代码语言:shell
复制
brew install xquartz
Windows

Windows用的应用是Xming6, 具体应用和配置见1,2,3.

安装服务器X端(X Server)

主要需要安装的是xauth, 建议一并安装xclock方便测试.

如果是centOS可以使用yum install -y xauth xclock.

安装和配置VScode插件

需要的插件有两个:

  1. remote X11
  2. remote X11(ssh)

已有免密登录的情况下, 在Remote Explorer 中点击设置,在Host下面增加三句转发指令

代码语言:text
复制
Host 172.18.187.21
 HostName 172.18.187.21
 User root
 ForwardX11 yes
 ForwardX11Trusted yes
 ForwardAgent yes

如果没有免密登录, 可以通过下面的代码7:

代码语言:shell
复制
ssh-keygen 
scp-copy-id user@host

结论

当需要不断改图或者用matplotlib以外的东西画图时, 还是有个可视化窗口方便一些.

篇外

其他方案

其实保存图看也不是不可以, 也挺方便.

R

先提供两种R不用可视化的方案:

自带:

代码语言:text
复制
# 1. 画板
pdf("filename.pdf")
plot()
dev.off()

# 2. ggplot
ggsave("filename.pdf")

然后是R可视化方案:

主要是配合VScode使用httpgd包:

代码语言:text
复制
httpgd::hgd()

甚至可以通过修改根目录的.Rprofile文件来自动使用:

代码语言:text
复制
if (interactive() && Sys.getenv("TERM_PROGRAM") == "vscode") {
    if ("httpgd" %in% .packages(all.available = TRUE)) {
        options(vsc.plot = FALSE)
        options(device = function(...) {
            httpgd::hgd(silent = TRUE)
            .vsc.browser(httpgd::hgd_url(), viewer = "Beside")
        })
    }
}
python

matplotlib绘图

代码语言:python
代码运行次数:0
复制
import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4], [1, 4, 2, 3])
plt.savefig('myplot.png')

借助matplotlib绘图

代码语言:python
代码运行次数:0
复制
import matplotlib

matplotlib.use("Agg")
import matplotlib.pyplot as plt
import igraph as ig

fig, ax = plt.subplots()
ig.plot(g, layout=layout, target=ax)
plt.savefig("test.png")

(其实大概也有自己的绘图保存方式比如ig.plot(g, "social_network.pdf"))

引用

  1. VScode 使用 remote-ssh 的情況下,如何使 plt.show()正常工作 - 简书
  2. Xming X Server for Windows - Official Website
  3. macOS windows x11 - 简书
  4. macOS使用XQuartz支持X11实现Linux图形化界面显示 - 知乎
  5. XQuartz
  6. Xming X Server for Windows - Official Website
  7. 手把手教你免密码连接ssh(适用于win、Linux) - 知乎

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言
  • 效果展示
  • 过程
    • 可视化方案
      • 安装本地X端(X client)
        • MacOS
        • Windows
      • 安装服务器X端(X Server)
        • 安装和配置VScode插件
        • 结论
        • 篇外
          • 其他方案
            • R
            • python
        • 引用
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档