簡體   English   中英

matplotlib.pyplot vs matplotlib.pylab

[英]matplotlib.pyplot vs matplotlib.pylab

我通常使用以下包來創建我的圖: matplotlib.pylab 但是,還有一個名為matplotlib.pyplot的包。

在使用它們時,我無法發現兩者之間的任何差異。 所以我的問題如下:

matplotlib.pylabmatplotlib.pyplot包之間的區別是什么? 在哪種情況下你會建議一個在另一個?

根據FAQ

Pyplot為matplotlib中的底層繪圖庫提供狀態機接口。 這意味着隱式和自動創建圖形和軸以實現所需的圖形....

Pylab將pyplot功能(用於繪圖)與numpy功能(用於數學和處理數組)結合在一個命名空間中,使得該命名空間(或環境)更像MATLAB。 例如,可以像在MATLAB中一樣調用sin和cos函數,以及具有pyplot的所有功能。

pyplot接口通常優選用於非交互式繪圖(即腳本)。 pylab界面便於交互式計算和繪圖,因為它最大限度地減少了輸入。 (我的重點。)

注意

from pylab import *

也表演

from numpy import *

這會覆蓋許多內置的Python函數,例如:

In [5]: import __builtin__
In [6]: import numpy as np

In [5]: {name for name in set(dir(np)).intersection(dir(__builtin__)) if not name.startswith('__') and getattr(__builtin__, name) != getattr(np, name)}
Out[5]: {'abs', 'all', 'any', 'max', 'min', 'round', 'sum'}

因此,我不喜歡from pylab import * (或者真的from module import *任何模塊的from module import * ),因為它使得眾所周知的心愛的Python名稱以意想不到的方式運行(如果你不總是記住, from numpy import *有污染了全局命名空間。)

例如,

In [32]: np.all([np.arange(3), np.arange(3)])
Out[32]: False

In [33]: all([np.arange(3), np.arange(3)])
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM