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
吧]…”特别有用。@user815423426
plt
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']