跳转到内容

Matplotlib

维基百科,自由的百科全书

这是本页的一个历史版本,由Rimolly留言 | 贡献2017年5月22日 (一) 17:24 与 Gnuplot的比较编辑。这可能和当前版本存在着巨大的差异。

matplotlib
File:Matplotlib logo.svg
Screenshot of matplotlib plots and code
Screenshot of matplotlib plots and code
原作者John D. Hunter
開發者Michael Droettboom, et al.
首次发布2003年,​22年前​(2003[1]
当前版本
  • 3.10.1(2025年2月28日;穩定版本)[2]
編輯維基數據鏈接
源代码库 編輯維基數據鏈接
编程语言Python
引擎 編輯維基數據鏈接
操作系统Cross-platform
类型Plotting
许可协议matplotlib license
网站matplotlib.org

matplotlib 是Python编程语言的一个绘图库及其数值数学扩展 NumPy。它为利用通用的图形用户界面工具包,如Tkinter, wxPython, Qt或GTK+向应用程序嵌入式绘图提供了面向对象的应用程序接口(API)。还有一个基于状态机(如开放图形库OpenGL)的程序pylab接口,设计成与MATLIB非常类似--尽管使用起来有些不堪。SciPy就利用了matplotlib。

matplotlib最初由John D. Hunter撰写,它拥有一个活跃的开发社区,并且根据BSD样式许可证分发。 在John D. Hunter2012年去世前不久,迈克尔Droettboom被提名为matplotlib的主要开发者。

截至到2015年10月30日,matplotlib 1.5.x支持Python 2.7到3.5版本。 Matplotlib 1.2是matplotlib的第一个版本,支持Python 3.x. Matplotlib 1.4是matplotlib支持Python 2.6的最后一个版本。


[3]

与MATLAB的比较

pyplot是matplotlib的一个模块,它提供了一个类似MATLAB的接口。 matplotlib被设计得用起来像MATLAB,具有使用Python的能力。免费是其优点。

与 Gnuplot的比较

gnuplot和matplotlib都是成熟的开源项目。 它们都可以产生多种不同绘图类型。 虽然很难指定一种某人能做而他人不能做的图形类型,但它们仍然具有不同的优点和缺点:

优点 缺点
Matplotlib
  • 带有内置代码的默认绘图样式
  • 与Python的深度集成
  • Matlab风格的编程接口(对一些人来说是优点,但对于其他人来说可能是缺点)。
  • 高度依赖其他包,如Numpyumpy。
  • 只适用于Python:很难/不可能在Python以外的语言中使用。 (但可以从Julia通过PyPlot软件包使用)
Gnuplot
  • 跨语言解决方案:可以用作通过管道或文件以不同语言编写的应用程序(例如GNU Octave,Maxima,JavaGnuplotHybrid)中的绘图引擎。
  • 独立程序:没有外部依赖。
  • 处理大型数据集时非常快。
  • 更容易操纵绘图细节
  • 旧的默认绘图样式:通常需要小的调整以产生有吸引力的图。
  • 在开发中活跃成员的数量较少(与Matplotlib相比)。

例子

 曲线图

>>> 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()

直方图

>>> import matplotlib.pyplot as plt
>>> from numpy.random import normal,rand
>>> x = normal(size=200)
>>> plt.hist(x,bins=30)
>>> plt.show()

散点图

>>> import matplotlib.pyplot as plt
>>> from numpy.random import rand
>>> a = rand(100)
>>> b = rand(100)
>>> plt.scatter(a,b)
>>> plt.show()

3D 图

>>> 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')
>>> 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()

更多例子

References

  1. ^ Copyright Policy. 
  2. ^ REL: v3.10.1. 2025年2月28日 [2025年3月19日]. 
  3. ^ Announcing Michael Droettboom as the lead matplotlib developer. matplotlib.org.