所以在ubuntu for windows(windows子系统for 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
我们怎么能把它送到plt.show()实际向我们展示图像的地方?我当前的选择是覆盖plot.show(),而只是在Windows中的/ mnt / c / Users / james / plots /下保存一个plot-148123456.png,只需打开一个浏览器窗口查看图像。
我想我可以托管该文件夹并使用浏览器。
我的目标是能够像上面的代码一样运行简单的示例,而无需将代码更改为ftp图像等等。我只想让图表显示在窗口中。
有没有人想出一个体面的方法呢?
答案 0 :(得分:39)
好的,所以我按照以下方式开展工作。我在Windows上安装了Ubuntu,安装了anaconda python 3.6。
sudo apt-get update
sudo apt-get install python3.6-tk
(您可能需要在您正在使用的python版本上安装不同的python*-tk
展开)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()
也许通过Jupyter笔记本或其他东西可以做得更好,但是在Linux系统上的Ubuntu for Windows中使用基本的命令行python matplotlib功能很不错,这使得许多其他gui应用程序也能正常工作。
答案 1 :(得分:5)
要让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
,但这可能没必要。Uninstalling the pip-installed matplotlib and reinstalling it via apt似乎是必要的,因为pip不包含运行GTK所需的C扩展,但是apt版本可以。
答案 2 :(得分:3)
在WSL上,也可以使用Visual Studio Code在WSL上查看该图,该代码自2019年6月发行以来包括"Plot Viewer"。
在常规.py文件中,插入注释字符串#%%
将代码标记为Jupyter(IPython)单元,并且代码透镜显示Run Cell
的选项。此外,在Python文件中单击鼠标右键可包含以下选项:
在Python交互式窗口中运行当前文件
2019年6月的更新包括可以使用的全新Plot Viewer 来处理任何图像图,例如流行的matplotlib图。
您可以通过双击绘图或单击 将鼠标悬停在图上时显示的“展开图像”按钮 Python交互式窗口中的图像:
使用绘图查看器,您可以平移,放大/缩小,浏览绘图 在当前会话中,然后将图形导出为PDF,SVG或PNG格式。
答案 3 :(得分:0)
我发现最好的方法是按照以下说明在Linux的Windows子系统(WSL)上安装Jupyter:
sudo apt update && upgrade
sudo apt install python3 python3-pip ipython3
现在您可以安装matplotlib
pip3 install matplotlib
还有Jupyter Notebook
pip3 install jupyter
如果需要更多信息,请检查此链接Python setup on the Windows subsystem for Linux (WSL)
答案 4 :(得分:0)
对于使用Ubuntu Focal Fossa发行版的 WSL2 ,我downloaded并在Windows上安装了 VcXsrv 。我使用以下配置:
我不了解原生OpenGL ,但禁用访问控制似乎很重要。
现在,您需要在WSL中导出环境变量DISPLAY
。
我在/etc/resolv.conf
中找到了正确的地址,但在ifconfig
结果中找不到了正确的地址。因此,以下命令对我不起作用:
export DISPLAY=$(ifconfig | grep inet | awk '{print $2}' | head -n 1 | awk '{print $0":0"}')
该IP地址也可以在ipconfig
命令上下文的命令CMD.exe
中找到。搜索vEthernet (WSL)
,应该是那个。
现在,您只需在WSL环境中执行xcalc即可测试一切是否正常。如果不存在xcalc,请安装它:
sudo apt-get update && sudo apt-get install x11-apps
xcalc命令应在Windows上打开如下所示的应用程序:
如果运行正常,则意味着可以连接到X服务器,但是您可能需要为Python安装一些额外的软件包,例如:
sudo apt-get install python3.x-tk
根据您的python版本更改.x
。
答案 5 :(得分:0)
就我而言(Windows 10、WSL2、带有 miniconda3 的 Ubuntu 20.04 和我使用 conda
命令安装了所有必需的 Python 3.6 包的虚拟环境、带有“Python”和“Remote”的基于 Windows 的 Visual Studio 代码 - WSL' extensions) 我在 Windows 下安装了 VcXsrv,并添加了
export DISPLAY=$(awk '/nameserver / {print $2; exit}' /etc/resolv.conf 2>/dev/null):0
到 Ubuntu 中的 .bashrc
文件。此外,在从 WSL 运行 Python 代码之前,我们必须启动 XLaunch
并选择“禁用访问控制”(我也选中了“本机 opengl”)。在项目文件夹中,不要将您的 Python 文件命名为 matplotlib.py
(一些相关问题报告为 here)。