%pylab
,特别是在iPython中。然而,在我所拥有的《学习Python》(Learning Python)和其他几本Python书籍中,我找不到任何提到 %pylab
的地方,也不确定它是什么意思。我相信答案很简单,但有谁能启发我一下吗?%pylab
,特别是在iPython中。然而,在我所拥有的《学习Python》(Learning Python)和其他几本Python书籍中,我找不到任何提到 %pylab
的地方,也不确定它是什么意思。我相信答案很简单,但有谁能启发我一下吗?%pylab
是 ipython 中的一个 魔法函数。
在 ipython 中,魔法函数总是以百分号(%)开头,后面紧跟着一个小文本字符串,没有任何空格;实际上,ipython 魔法函数定义了一些特别适用于交互式工作的快捷方式,例如,为了让您了解魔法函数在 python 中是如何工作的,以下是我最喜欢的几个:
to view cwd directory contents:
%ls
to run a script in ipython using an empty namespace, type space then a script name:
%run
to execute a code snippet (particularly for multi-line snippets which would usually cause an _IndentationError_ to be thrown):
%paste
%pylab
魔法函数时,它会触发Matplotlib中各种模块的导入。from matplotlib import pyplot as PLT
实际上,pyplot有自己的神奇python函数。
%pyplot
为什么有两个不同的接口?Matplotlib最初的接口是pylab,后来才添加了Pythonic接口。当该项目开始时,脚本编写和应用开发并不是Matplotlib的主要使用场景,而是在Python shell中进行绘图。
显然,John Hunter(Matplotlib的创建者)想要在Python中包含交互式绘图,因此他向Fernando Perez(FP)的IPython项目提交了一个补丁。当时FP是博士生,并告知JH他无法立即审核该补丁。因此,JH创建了Matplotlib。这意味着Matplotlib始于基于shell的绘图方案。
pylab接口确实更适合交互式工作:
from pylab import *
x, y = arange(10), cos(x/2)
plot(x, y)
show()
并使用pyplot接口:
from matplotlib import pyplot as PLT
import numpy as NP
x, y = NP.arange(10), NP.cos(x/2)
fig = PLT.figure()
ax1 = fig.add_subplot(111)
ax1.plot(x, y)
PLT.show()
%pylab
是将下面所有命令的快捷方式——实质上将numpy和matplotlib添加到会话中。这被纳入iPython作为过渡工具,当前的建议是不要使用它。核心原因是以下命令集太多地导入了全局命名空间,而且它们不允许您将matplotlib的模式从UI更改为QT或其他模式。您可以在这里看到这背后的历史和原因。
%pylab
的作用:
import numpy
import matplotlib
from matplotlib import pylab, mlab, pyplot
np = numpy
plt = pyplot
from IPython.core.pylabtools import figsize, getfigs
from pylab import *
from numpy import *
这是我在笔记本开头使用的替代方法:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
inline
是什么作用? - Rachelinline
可以让你在当前页面中嵌入图形,而不是在新的窗口或终端中打开,想要查看效果可以去掉 inline
。 - yosemite_ksum
:-( - dsz关于IPython魔法函数的更近一步文档请参考这里。
魔法函数通常以类似于shell的语法形式出现,但实际上是Python函数。其语法和赋值方式类似于感叹号(!)语法,但具有更高的灵活性和功能。魔法函数以百分号(%)或双百分号(%%)开头。
关于IPython魔法函数的更多信息,请参考这里,特别是关于%pylab
魔法的信息请参考这里。
%pylab [--no-import-all] [gui]
加载 numpy 和 matplotlib 以进行交互式工作。
此函数使您可以在 IPython 会话的任何时候激活 pylab(matplotlib、numpy 和交互支持)。
%pylab
进行以下导入:
import numpy
import matplotlib
from matplotlib import pylab, mlab, pyplot
np = numpy
plt = pyplot
from IPython.display import display
from IPython.core.pylabtools import figsize, getfigs
from pylab import *
from numpy import *
%pylab
是一个“魔法函数”,你可以在IPython中或交互式Python中调用它。通过调用它,IPython解释器将导入matplotlib
和NumPy
模块,以便您方便地访问它们的函数。例如,
rich@rich-ubuntu:~/working/fb_recruit/working$ ipython
Python 2.7.6 |Anaconda 1.8.0 (64-bit)| (default, Nov 11 2013, 10:47:18)
Type "copyright", "credits" or "license" for more information.
IPython 1.1.0 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
In [1]: arange(4)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-1-2e43d7eb1b3e> in <module>()
----> 1 arange(4)
NameError: name 'arange' is not defined
In [2]: %pylab
Using matplotlib backend: Qt4Agg
Populating the interactive namespace from numpy and matplotlib
In [3]: arange(4)
Out[3]: array([0, 1, 2, 3])
In [4]:
Pylab是一个类似MATLAB的Python数学前端工具。iPython对Pylab有特定的支持,可以使用%pylab
魔术命令调用。