有时候在服务器上绘图会受到结果不显示的困扰, 无论是R还是python都会有类似的情况, 那么有什么比较方便的应用呢?
本文的前提是你使用VScode并以安装好python等环境, 可以日常在服务器工作.
使用的方案是X协议, 详细介绍见4. 具体使用软件是MacOS的Quartz或Windows的Xming, Linux的xauth, VScode的插件remote X11和remote X11(ssh).
大概需要三个步骤:
MacOS用的应用是Quartz, 可以直接从官网5下载, 也可以从brew下载.
一般情况都推荐brew, 但是我Ventura 13.0.1 (22A400)系统的Apple M1不可用, 所以尽量建议官网下载安装包, 安装之后记得重启一下.
brew install xquartz
Windows用的应用是Xming6, 具体应用和配置见1,2,3.
主要需要安装的是xauth, 建议一并安装xclock方便测试.
如果是centOS可以使用yum install -y xauth xclock
.
需要的插件有两个:
已有免密登录的情况下, 在Remote Explorer 中点击设置,在Host下面增加三句转发指令
Host 172.18.187.21
HostName 172.18.187.21
User root
ForwardX11 yes
ForwardX11Trusted yes
ForwardAgent yes
如果没有免密登录, 可以通过下面的代码7:
ssh-keygen
scp-copy-id user@host
当需要不断改图或者用matplotlib以外的东西画图时, 还是有个可视化窗口方便一些.
其实保存图看也不是不可以, 也挺方便.
先提供两种R不用可视化的方案:
自带:
# 1. 画板
pdf("filename.pdf")
plot()
dev.off()
# 2. ggplot
ggsave("filename.pdf")
然后是R可视化方案:
主要是配合VScode使用httpgd包:
httpgd::hgd()
甚至可以通过修改根目录的.Rprofile
文件来自动使用:
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")
})
}
}
matplotlib绘图
import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4], [1, 4, 2, 3])
plt.savefig('myplot.png')
借助matplotlib绘图
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")
)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。