课程评价 (0)

请对课程作出评价:
0/300

学员评价

暂无精选评价
20分钟

基本概念

  1. matplotlib被划分为不同的层次:
    1. matplotlib.pyplot模块:位于matplotlib的顶层,它是一个state-machine environment。该模块中的很多函数是用于给当前Figure的当前Axes添加plot element,比如linetextimage等。它非常类似于Matlab的用法。
    2. 下一层是面向对象的接口:在这一层pyplot只是用部分函数来创建Figure,然后通过该Figure显式的创建Axes,然后通过面向对象的接口在该Axes上添加图形。极端情况下用户可以完全抛弃pyplot而完全使用面向对象的接口。
    3. 对于非交互式绘图,官方文档推荐用pyplot创建Figure,然后使用面向对象接口来绘图。
  2. matplotlib的所有plotting function期待输入numpy.array或者numpy.ma.masked_array类型的数据作为输入。某些长得像numpy.array的数据比如numpy.matrix类型的输入数据可能会导致matplotlib工作异常。如果确实需要使用numpy.matrix,你应该首先将它转换为numpy.array
  3. matplotlib 、 pyplot 、 pylab 的关系:
    1. matplotlib:它是整个package
    2. matplotlib.pyplot:是matplotlib的一个module。它为底层的面向对象接口提供了一个state-machine interface。这个state-machine必要的时候隐式创建FigureAxes,并维护current Figurecurrent Axes
    3. pylab是一个便利的module,它导入了matplotlib.pyplot以及numpy,它只是为了plot以及math方便而用。官方文档不推荐使用它。
    4. pyplot.gcf():获取当前的figure对象。pyplot.gca():获取当前的Axes对象
  4. 代码风格:官方文档不推荐 MATLAB风格的代码。因为MATLAB风格代码维护了全局状态,你执行同一个plot多次可能会发现结果是不同的。官方文档推荐使用如下风格:
  import matplotlib.pyplot as plt
  import numpy as np
  fig=plt.figure()
  ax=fig.add_subplot(111)
  ax.plot(...)
  ax.show()

这样的风格使得在绘图事件中,每个角色都很清楚,数据的流动也很清楚。