因此,在ubuntu for windows(linux的windows子系统)上,人们似乎建议我们使用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(),而不是只保存 /mnt/c/Users/james/plots/窗口下的plot-148123456.png,只打开一个浏览器窗口查看图像。
我的目标是能够运行简单的示例,如上面的代码,而无需将代码更改为ftp图像的某个位置等。我只希望绘图显示在窗口中。
有人想出一个体面的方法来做这件事吗?
为了让matplotlib与GTKAgg在Windows上的Ubuntu上的Bash一起工作,我:
export DISPLAY=localhost:0.0
(添加到~/.bashrc以使其永久化)]sudo pip卸载matplotlib
sudo-apt-install-python-matplotlib
后端:GTKAgg
(而不是后端:agg
)sudo apt get install python-gtk2-dev
,但这可能不是必需的
卸载pip安装的matplotlib并通过apt重新安装它似乎是必要的,因为pip不包括运行GTK所需的C扩展,但apt版本包含。
也可以使用Visual Studio代码在WSL上查看绘图,自2019年6月发布以来,该代码包括一个“绘图查看器”。
在常规的. py文件中,插入注释字符串#%%
将代码标记为Jupyter(IPython)单元格,代码镜头显示Run Cell
选项。此外,在Python文件中右键单击包括以下选项:
在Python交互窗口中运行当前文件
2019年6月的更新包括一个全新的绘图查看器,可用于操纵任何图像绘图,如流行的matplotlib绘图。
您可以通过双击绘图或在Python交互窗口中将鼠标悬停在绘图图像上时显示的“展开图像”按钮进行尝试:
使用绘图查看器,可以平移、放大/缩小、在当前会话中浏览绘图,以及将绘图导出为PDF、SVG或PNG格式。
好的,我让它工作如下。我在windows上安装了Ubuntu,并安装了anaconda python 3.6。
sudo apt-get更新
sudo apt-get安装python3.6-tk
(根据您使用的python版本,您可能需要安装不同的python*-tk) pip安装matplotlib
(用于matplotlib.但许多其他东西现在也工作)导出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笔记本或其他东西来实现,但在Ubuntu for Windows on Subsystem for Linux中具有基本的命令行python matplotlib功能也很好,这使得许多其他gui应用也可以工作。
例如,您可以安装xeyes,它会说安装x11应用程序,安装它将安装许多GUI应用程序使用的GTK。但关键是,一旦你的显示设置正确,并且你的x服务器在windows上,那么大多数在本机ubuntu上工作的东西都会在WSL上工作。
编辑2019-09-04:今天我在升级一些库后遇到了“无法获取屏幕资源”的问题。所以我安装了VcXsrv并用它代替了Xming。只需从安装https://sourceforge.net/projects/vcxsrv/然后跑去。exe,选择多个窗口,然后单击“确定”。然后一切顺利。
《为WSL2用户编辑》2020-06-23 WSL2(目前为insider fast ring)具有GPU/docker支持,因此值得升级。然而,它在虚拟机中运行。对于WSL 2,请遵循相同的步骤1-4,然后:
export DISPLAY=`grep -oP "(?<=nameserver ).+" /etc/resolv.conf`:0.0
注意:一些WSL2用户出现了错误,比如无法连接到显示"172. x. x. x: 0"
。如果是这样,请尝试使用以下命令检查DISPLAY中存储的IP地址:echo$DISPLAY
。如果显示的IP似乎是错误的(即8.8.8.8或其他不工作的IP地址),您需要将第5点中显示的~/. bashrc
中的代码更改为可以获取实例的IP地址的代码。一个用户说这是可行的:导出DISPLAY=$(ifconfig|grep net|awk'{print 2美元}'|head-n 1|awk'{print 0美元": 0"}')
。然而,对其他一些人来说,它不起作用。YMMV,但只是找到你的IP和使用如果显示。对于大多数WSL2用户来说,#5中的命令有效。
主要内容:绘制线性函数图像,绘制正弦波图,subplot(),bar()柱状图,numpy.histogram(),plt()Matplotlib 是 Python 的绘图库,它经常与 NumPy 一起使用,从而提供一种能够代替 Matlab 的方案。不仅如此 Matplotlib 还可以与 PyQt 和 wxPython 等图形工具包一起使用。 Matplotlib 最初由 John D. Hunter 编写,目前,它的最新的版本是 3.3.1,最后一个支持 Python 2 的版本是 2.2
问题内容: 在Matplotlib中,我按如下所示制作虚线网格: 但是,我无法找出如何(甚至可能)在其他图形元素(如条形图)后面绘制网格线。更改添加网格的顺序与添加其他元素的顺序没有区别。 是否有可能使网格线出现在其他所有内容的后面? 问题答案: 据此-http://matplotlib.1069221.n5.nabble.com/axis-elements-and-zorder- td5346.
我有福勒。数据帧: 我是这样画的: 结果图如下所示: 如何修复主要和次要刻度的数量,以便在主要刻度之间至少有10个主要刻度和用户指定的次要刻度的数量?
我使用Liferay portlet bundle 6.2(Tomcat)和Liferay IDE(eclipse)。我创建了两个Liferay插件项目。在第一个portlet(第一个插件portlet)中,我使用portlet首选项保存了一些数据。现在,我将在第一个portlet中显示第二个portlet。我怎么能做到?我找到了下面的代码和这个链接 从其他portlet打开portlet 但是,
主要内容:第一个三维绘图程序,3D散点图,3D等高线图,3D线框图,3D曲面图最初开发的 Matplotlib,仅支持绘制 2d 图形,后来随着版本的不断更新, Matplotlib 在二维绘图的基础上,构建了一部分较为实用的 3D 绘图程序包,比如 ,通过调用该程序包一些接口可以绘制 3D散点图、3D曲面图、3D线框图等 mpl_toolkits 是 Matplotlib 的绘图工具包。 第一个三维绘图程序 下面编写第一个三维绘图程序。 首先创建一个三维绘图区域, plt
1.4.1 简介Matplotlib 可能是 Python 唯一一个最广泛使用的二维图包。它同时提供了从 Python 中可视化数据非常的快速方式以及多种格式的出版质量图片。我们将在交互模式下研究 Matplotlib,包含大多数的常用案例。 1.4.1.1 IPython和matplotlib模式IPython 是强化版交互Python shell,有许多有趣的功能,包括:输入输出的命名、访问s