Matplotlib是Python語言及其數值計算庫NumPy的繪圖庫。它提供了一個面向對象的API,可以將繪圖嵌入到使用通用GUI工具包(如Tkinter、wxPython、Qt或GTK)的程序中。它還有一個基於狀態機(就像OpenGL)的過程式編程「pylab」接口,其設計與MATLAB非常類似,但由於命名空間的問題,因此建議改用matplotlib.pyplot取代。[4]SciPy使用matplotlib進行圖形繪製。
此條目翻譯品質不佳。 |
![]() Matplotlib繪製的圖表與程式碼 | |
原作者 | John D. Hunter |
---|---|
開發者 | Michael Droettboom, et al. |
首次發布 | 2003年[1] |
當前版本 |
|
源代碼庫 | |
編程語言 | Python |
引擎 | |
操作系統 | 跨平臺 |
類型 | 繪圖 |
許可協議 | matplotlib license |
網站 | matplotlib |
Matplotlib最初由美國神經生物學家John D. Hunter撰寫,於2003年面世,從此它擁有一個活躍的開發社區[5],並根據BSD許可證發布。 在John D. Hunter於2012年8月去世前不久,Michael Droettboom被提名為matplotlib的主要開發者[6],隨後,Thomas Caswell也加入了他的行列。[7][8]Matplotlib是一個由NumFOCUS財政資助的項目。[9]
Matplotlib 2.0.x支持Python 2.7到3.10版本。Matplotlib 1.2是第一個支持Python 3.x的版本。Matplotlib 1.4是最後一個支持Python 2.6的版本。[10]Matplotlib已簽署Python 3聲明,承諾在2020年後不再支持Python 2。[11]
與MATLAB的比較
Pyplot是matplotlib的一個模塊,它提供了一個類似MATLAB的接口。 [12]Matplotlib被設計成與MATLAB一樣可用,能夠使用Python,並且具有自由開源的優點。
與 Gnuplot的比較
gnuplot和matplotlib都是成熟的開源項目。 它們都可以產生多種不同繪圖類型。 雖然很難指定一種某人能做而他人不能做的圖形類型,但它們仍然具有不同的優點和缺點:
優點 | 缺點 | |
---|---|---|
Matplotlib |
|
|
Gnuplot |
|
|
例子
曲線圖
![Thumb](http://upload.wikimedia.org/wikipedia/commons/thumb/1/13/Matplotlib_basic_v.svg/640px-Matplotlib_basic_v.svg.png)
>>> import matplotlib.pyplot as plt
>>> import numpy as np
>>> a = np.linspace(0,10,100)
>>> b = np.exp(-a)
>>> plt.plot(a,b)
>>> plt.show()
![Thumb](http://upload.wikimedia.org/wikipedia/commons/thumb/1/13/Matplotlib_histogram_v.svg/640px-Matplotlib_histogram_v.svg.png)
>>> import matplotlib.pyplot as plt
>>> from numpy.random import normal,rand
>>> x = normal(size=200)
>>> plt.hist(x,bins=30)
>>> plt.show()
散點圖
![Thumb](http://upload.wikimedia.org/wikipedia/commons/thumb/9/98/Matplotlib_scatter_v.svg/640px-Matplotlib_scatter_v.svg.png)
>>> import matplotlib.pyplot as plt
>>> from numpy.random import rand
>>> a = rand(100)
>>> b = rand(100)
>>> plt.scatter(a,b)
>>> plt.show()
3D 圖
![Thumb](http://upload.wikimedia.org/wikipedia/commons/thumb/5/58/Matplotlib_3d_v.svg/640px-Matplotlib_3d_v.svg.png)
>>> from matplotlib import cm
>>> from mpl_toolkits.mplot3d import Axes3D
>>> import matplotlib.pyplot as plt
>>> import numpy as np
>>> fig = plt.figure()
>>> # ax = fig.gca(projection='3d') (Old)
>>> ax = fig.add_subplot(projection='3d')
>>> X = np.arange(-5, 5, 0.25)
>>> Y = np.arange(-5, 5, 0.25)
>>> X, Y = np.meshgrid(X, Y)
>>> R = np.sqrt(X**2 + Y**2)
>>> Z = np.sin(R)
>>> surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm)
>>> plt.show()
更多例子
-
Image plot
-
Contour plot
-
Scatter plot
-
Polar plot
-
Line plot
-
3-D plot
-
Image plot
軼事
![Thumb](http://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Matplotlib_xkcd.png/320px-Matplotlib_xkcd.png)
為了致敬xkcd,matplotlib加入了matplotlib.pyplot.xkcd()函數,模仿xkcd的漫畫風格進行繪圖。[13][14]
參考資料
參見
外部連結
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.