NumPy - Matplotlib

Matplotlib 是 Python 的绘图库。 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。 它也可以和图形工具包一起使用,如 PyQt 和 wxPython。

Matplotlib 模块最初是由 John D. Hunter 编写的。 自 2012 年以来,Michael Droettboom 是主要开发者。 目前,Matplotlib 1.5.1 是可用的稳定版本。 该软件包可以二进制分发,其源代码形式在 www.matplotlib.org 上提供。

通常,通过添加以下语句将包导入到 Python 脚本中:

  1. from matplotlib import pyplot as plt

这里pyplot()是 matplotlib 库中最重要的函数,用于绘制 2D 数据。 以下脚本绘制方程y = 2x + 5

示例

  1. import numpy as np
  2. from matplotlib import pyplot as plt
  3. x = np.arange(1,11)
  4. y = 2 * x + 5
  5. plt.title("Matplotlib demo")
  6. plt.xlabel("x axis caption")
  7. plt.ylabel("y axis caption")
  8. plt.plot(x,y) plt.show()

ndarray对象xnp.arange()函数创建为x轴上的值。y轴上的对应值存储在另一个数组对象y中。 这些值使用matplotlib软件包的pyplot子模块的plot()函数绘制。

图形由show()函数展示。

上面的代码应该产生以下输出:

Matplotlib Demo

作为线性图的替代,可以通过向plot()函数添加格式字符串来显示离散值。 可以使用以下格式化字符。

字符 描述
'-' 实线样式
'--' 短横线样式
'-.' 点划线样式
':' 虚线样式
'.' 点标记
',' 像素标记
'o' 圆标记
'v' 倒三角标记
'^' 正三角标记
'<' 左三角标记
'>' 右三角标记
'1' 下箭头标记
'2' 上箭头标记
'3' 左箭头标记
'4' 右箭头标记
's' 正方形标记
'p' 五边形标记
'*' 星形标记
'h' 六边形标记 1
'H' 六边形标记 2
'+' 加号标记
'x' X 标记
'D' 菱形标记
'd' 窄菱形标记
'|' 竖直线标记
'_' 水平线标记

还定义了以下颜色缩写。

字符 颜色
'b' 蓝色
'g' 绿色
'r' 红色
'c' 青色
'm' 品红色
'y' 黄色
'k' 黑色
'w' 白色

要显示圆来代表点,而不是上面示例中的线,请使用ob作为plot()函数中的格式字符串。

示例

  1. import numpy as np
  2. from matplotlib import pyplot as plt
  3. x = np.arange(1,11)
  4. y = 2 * x + 5
  5. plt.title("Matplotlib demo")
  6. plt.xlabel("x axis caption")
  7. plt.ylabel("y axis caption")
  8. plt.plot(x,y,"ob")
  9. plt.show()

上面的代码应该产生以下输出:

Color Abbreviation

绘制正弦波

以下脚本使用 matplotlib 生成正弦波图

示例

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. # 计算正弦曲线上点的 x 和 y 坐标
  4. x = np.arange(0, 3 * np.pi, 0.1)
  5. y = np.sin(x)
  6. plt.title("sine wave form")
  7. # 使用 matplotlib 来绘制点
  8. plt.plot(x, y)
  9. plt.show()

Sine Wave

subplot()

subplot()函数允许你在同一图中绘制不同的东西。 在下面的脚本中,绘制正弦余弦值。

示例

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. # 计算正弦和余弦曲线上的点的 x 和 y 坐标
  4. x = np.arange(0, 3 * np.pi, 0.1)
  5. y_sin = np.sin(x)
  6. y_cos = np.cos(x)
  7. # 建立 subplot 网格,高为 2,宽为 1
  8. # 激活第一个 subplot
  9. plt.subplot(2, 1, 1)
  10. # 绘制第一个图像
  11. plt.plot(x, y_sin)
  12. plt.title('Sine')
  13. # 将第二个 subplot 激活,并绘制第二个图像
  14. plt.subplot(2, 1, 2)
  15. plt.plot(x, y_cos)
  16. plt.title('Cosine')
  17. # 展示图像
  18. plt.show()

上面的代码应该产生以下输出:

Sub Plot

bar()

pyplot子模块提供bar()函数来生成条形图。 以下示例生成两组xy数组的条形图。

示例

  1. from matplotlib import pyplot as plt
  2. x = [5,8,10]
  3. y = [12,16,6]
  4. x2 = [6,9,11]
  5. y2 = [6,15,7]
  6. plt.bar(x, y, align = 'center')
  7. plt.bar(x2, y2, color = 'g', align = 'center')
  8. plt.title('Bar graph')
  9. plt.ylabel('Y axis')
  10. plt.xlabel('X axis')
  11. plt.show()