Python pylab.X vs pylab.plt.X
我注意到在Python pylab.X vs pylab.plt.X,python,matplotlib,Python,Matplotlib,我注意到在pylab中有一些名称重复。假设I导入pylab。以下是一些例子: 例1: pylab.ion() pylab.plt.ion() 例2 pylab.figure(1) pylab.plot.figure(1) 他们之间有什么区别吗?为什么有这两个呢?您可以随时检查: >>> pylab.ion is pylab.plt.ion True 所以,它们是相同的函数 有些名称是重复的,可能是历史原因,为了实现向后兼容性 导入matplotlib有一个不成文的约定:
pylab
中有一些名称重复。假设I导入pylab
。以下是一些例子:
例1:
pylab.ion()
pylab.plt.ion()
例2
pylab.figure(1)
pylab.plot.figure(1)
他们之间有什么区别吗?为什么有这两个呢?您可以随时检查:
>>> pylab.ion is pylab.plt.ion
True
所以,它们是相同的函数
有些名称是重复的,可能是历史原因,为了实现向后兼容性
导入matplotlib
有一个不成文的约定:
import matplotlib.pyplot as plt
如果只需要打印功能
导入pylab
将创建一个类似Matlab的环境,其中包含来自NumPy的许多功能。(因此这也是名称重复的原因)如果您阅读(不包括docstring的整个pylab.py
如下)
您可以看到,导入了pyplot
中的所有内容(来自matplotlb.pyplot import*
和pyplot
),并且导入了pyplot
(import pyplot as plt
)。您看到的不是两个函数,而是多次导入的同一个函数/模块
至于为什么,为什么不呢
pylab
专为交互式使用而设计。将所有功能直接放在名称空间中非常方便,在名称空间中放置plt
以及原型代码也非常方便。谢谢。您知道为什么matplotlib
捆绑了两种访问这些函数的方法吗?遗产?将来有谁会更喜欢另一个吗?Thank@tcaswell的可能副本,我读过这个线程,但实际上有很多不同的方法:1)matplotlib.pyplot.plot
,2)pylab.plot
和3)pylab.plot.plot()
。他们都一样吗?@tcaswell。请注意,这里我询问的是两种pylab
方法,而不是pylab
和matplotlib
接口之间的区别。谢谢。这太棒了。最后一句“…在相同的名称空间中使用plt
非常方便[我想是pylab
吧]…”特别有用。@user815423426plt
是matplotlib.pyplot
pylab
只是批量导入一堆东西的一种方式。
from __future__ import print_function
import sys, warnings
from matplotlib.cbook import flatten, is_string_like, exception_to_str, \
silent_list, iterable, dedent
import matplotlib as mpl
# make mpl.finance module available for backwards compatability, in case folks
# using pylab interface depended on not having to import it
import matplotlib.finance
from matplotlib.dates import date2num, num2date,\
datestr2num, strpdate2num, drange,\
epoch2num, num2epoch, mx2num,\
DateFormatter, IndexDateFormatter, DateLocator,\
RRuleLocator, YearLocator, MonthLocator, WeekdayLocator,\
DayLocator, HourLocator, MinuteLocator, SecondLocator,\
rrule, MO, TU, WE, TH, FR, SA, SU, YEARLY, MONTHLY,\
WEEKLY, DAILY, HOURLY, MINUTELY, SECONDLY, relativedelta
import matplotlib.dates # Do we need this at all?
# bring all the symbols in so folks can import them from
# pylab in one fell swoop
## We are still importing too many things from mlab; more cleanup is needed.
from matplotlib.mlab import griddata, stineman_interp, slopes, \
inside_poly, poly_below, poly_between, \
is_closed_polygon, path_length, distances_along_curve, vector_lengths
from matplotlib.mlab import window_hanning, window_none, detrend, demean, \
detrend_mean, detrend_none, detrend_linear, entropy, normpdf, levypdf, \
find, longest_contiguous_ones, longest_ones, prepca, \
prctile, prctile_rank, \
center_matrix, rk4, bivariate_normal, get_xyz_where, \
get_sparse_matrix, dist, \
dist_point_to_segment, segments_intersect, fftsurr, movavg, \
exp_safe, \
amap, rms_flat, l1norm, l2norm, norm_flat, frange, identity, \
base_repr, binary_repr, log2, ispower2, \
rec_append_fields, rec_drop_fields, rec_join, csv2rec, rec2csv, isvector
import matplotlib.mlab as mlab
import matplotlib.cbook as cbook
from numpy import *
from numpy.fft import *
from numpy.random import *
from numpy.linalg import *
from matplotlib.pyplot import *
# provide the recommended module abbrevs in the pylab namespace
import matplotlib.pyplot as plt
import numpy as np
import numpy.ma as ma
# don't let numpy's datetime hide stdlib
import datetime
if sys.version_info > (2, 6, 0):
bytes = __builtins__['bytes']