Awo*_*ing 35 python linux matplotlib windows-subsystem-for-linux
因此,似乎在ubuntu for windows(Linux子系统的Linux)上,人们建议我们需要使用Agg后端并只保存图像,而不是显示图.
import matplotlib
matplotlib.use('Agg') # no UI backend
import matplotlib.pyplot as plt
import numpy as np
t = np.arange(0.0, 2.0, 0.01)
s = 1 + np.sin(2*np.pi*t)
plt.plot(t, s)
plt.title('About as simple as it gets, folks')
#plt.show()
plt.savefig("matplotlib.png") #savefig, don't show
Run Code Online (Sandbox Code Playgroud)
我们怎么能把它带到plt.show()实际向我们展示图像的地方?我当前的选择是覆盖plot.show(),而只是在Windows中的/ mnt/c/Users/james/plots /下保存一个plot-148123456.png,只需打开一个浏览器窗口查看图像.
我想我可以托管该文件夹并使用浏览器.
我的目标是能够运行像上面代码这样的简单示例,而无需将代码更改为ftp图像等等.我只是希望绘图显示在窗口中.
有没有人想出一个体面的方法呢?
Awo*_*ing 54
好的,所以我按照以下方式开展工作.我在Windows上安装了Ubuntu,安装了anaconda python 3.6.
sudo apt-get update
sudo apt-get install python3.6-tk
(您可能必须python*-tk
在您正在使用的python版本上安装不同的depnding)pip install matplotlib
(对于matplotlib.但现在很多其他的东西也可以工作)export DISPLAY=localhost:0.0
(添加到~/.bashrc
永久)无论如何,毕竟在wsl上运行ubuntu的代码工作原理如下:
import matplotlib.pyplot as plt
import numpy as np
t = np.arange(0.0, 2.0, 0.01)
s = 1 + np.sin(2*np.pi*t)
plt.plot(t, s)
plt.title('About as simple as it gets, folks')
plt.show()
Run Code Online (Sandbox Code Playgroud)
也许通过Jupyter笔记本或其他东西可以做得更好,但是在Linux的子系统上使用Ubuntu for Windows中的基本命令行python matplotlib功能很好,这使得许多其他gui应用程序也可以工作.
Chr*_*ert 11
还可以使用 Visual Studio Code 在 WSL 上查看绘图,从 2019 年 6 月发布开始,它包括一个“绘图查看器”。
在常规 .py 文件中,插入注释字符串#%%
将代码标记为 Jupyter (IPython) 单元格,并且代码镜头显示Run Cell
. 此外,在 Python 文件中右键单击包括以下选项:
在 Python 交互窗口中运行当前文件
2019 年 6 月的更新包括一个全新的绘图查看器,可用于处理任何图像绘图,例如流行的 matplotlib 绘图。
您可以通过双击绘图或单击将鼠标悬停在 Python 交互窗口中的绘图图像上时显示的“扩展图像”按钮来尝试它:
使用绘图查看器,您可以平移、放大/缩小、浏览当前会话中的绘图,以及将绘图导出为 PDF、SVG 或 PNG 格式。
对于使用 Ubuntu Focal Fossa 版本的WSL2 ,我在 Windows 上下载并安装了VcXsrv。我使用这个配置:
我不知道原生 OpenGL,但禁用访问控制似乎很重要。
现在,您需要DISPLAY
在 WSL 中导出 env 变量。
我在 中找到了正确的地址/etc/resolv.conf
,但在结果中找到的地址ifconfig
却不是。所以以下命令对我不起作用:
export DISPLAY=$(ifconfig | grep inet | awk '{print $2}' | head -n 1 | awk '{print $0":0"}')
Run Code Online (Sandbox Code Playgroud)
ipconfig
该 IP 地址也可以在命令上下文中找到CMD.exe
。搜索一下vEthernet (WSL)
,应该就是这个了。
现在,您只需在 WSL 环境中执行 xcalc 即可测试一切是否正常。如果 xcalc 不存在,请安装它:
sudo apt-get update && sudo apt-get install x11-apps
Run Code Online (Sandbox Code Playgroud)
xcalc 命令应该在 Windows 上打开一个如下所示的应用程序:
如果它工作正常,则意味着可以连接到您的 X 服务器,但您可能需要为 Python 安装一些额外的软件包,例如:
sudo apt-get install python3.x-tk
Run Code Online (Sandbox Code Playgroud)
.x
根据你的python版本进行更改。
要使matplotlib 在Windows上的Ubuntu的Bash上与GTKAgg 一起使用,我:
export DISPLAY=localhost:0.0
(添加到〜/ .bashrc以使其永久存在)]sudo pip uninstall matplotlib
sudo apt install python-matplotlib
backend : GTKAgg
(而不是backend : agg
)sudo apt-get install python-gtk2-dev
,但这可能没有必要。似乎有必要卸载通过pip安装的matplotlib并通过apt重新安装,因为pip不包括运行GTK所需的C扩展,但apt版本却包含。