NumPy - Matplotlib
Matplotlib 是 Python 的绘图库。 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。 它也可以和图形工具包一起使用,如 PyQt 和 wxPython。
Matplotlib 模块最初是由 John D. Hunter 编写的。 自 2012 年以来,Michael Droettboom 是主要开发者。 目前,Matplotlib 1.5.1 是可用的稳定版本。 该软件包可以二进制分发,其源代码形式在 www.matplotlib.org 上提供。
通常,通过添加以下语句将包导入到 Python 脚本中:
from matplotlib import pyplot as plt
这里pyplot()
是 matplotlib 库中最重要的函数,用于绘制 2D 数据。 以下脚本绘制方程y = 2x + 5
:
示例
import numpy as np from matplotlib import pyplot as plt x = np.arange(1,11) y = 2 * x + 5 plt.title("Matplotlib demo") plt.xlabel("x axis caption") plt.ylabel("y axis caption") plt.plot(x,y) plt.show()
结果如下图
作为线性图的替代,可以通过向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()
函数中的格式字符串。
示例
import numpy as np from matplotlib import pyplot as plt x = np.arange(1,11) y = 2 * x + 5 plt.title("Matplotlib demo") plt.xlabel("x axis caption") plt.ylabel("y axis caption") plt.plot(x,y,"ob") plt.show()
结果如下图
绘制正弦波
以下脚本使用 matplotlib 生成正弦波图。
示例
x = np.arange(0,3*np.pi,0.1) y = np.sin(x) plt.title('sine wave form') plt.plot(x,y) plt.show()
结果如下图
subplot()
subplot()
函数允许你在同一图中绘制不同的东西。 在下面的脚本中,绘制正弦和余弦值。
示例
import numpy as np import matplotlib.pyplot as plt x = np.arange(0,3*np.pi,0.1) sin_y = np.sin(x) cos_y = np.cos(x) #绘制第一张图 a1 = plt.subplot(2,2,1) #第二张图 a2 = plt.subplot(2,2,2) a1.plot(x,sin_y) a2.plot(x,cos_y) plt.show()
#结果如下
bar()
pyplot
子模块提供bar()
函数来生成条形图。 以下示例生成两组x
和y
数组的条形图。
#列
import matplotlib.pyplot as plt import numpy as np x = np.array([5,8,10]) y = np.array([12,16,6]) x2 = np.array([6,9,11]) y2 = np.array([6,15,7]) plt.bar(x, y, align = 'center') plt.bar(x2, y2, color = 'g', align = 'center') plt.title('Bar graph') plt.ylabel('Y axis') plt.xlabel('X axis') plt.show()
#结果如下
NumPy - 使用 Matplotlib 绘制直方图
NumPy 有一个numpy.histogram()
函数,它是数据的频率分布的图形表示。 水平尺寸相等的矩形对应于类间隔,称为bin
,变量height
对应于频率。
numpy.histogram()
numpy.histogram()
函数将输入数组和bin
作为两个参数。 bin
数组中的连续元素用作每个bin
的边界。
import numpy as np a = np.array([22,87,5,43,56,73,55,54,11,20,51,5,79,31,27]) np.histogram(a,bins = [0,20,40,60,80,100]) #结果 (array([3, 4, 5, 2, 1]), array([ 0, 20, 40, 60, 80, 100]))
plt()
Matplotlib 可以将直方图的数字表示转换为图形。 pyplot
子模块的plt()
函数将包含数据和bin
数组的数组作为参数,并转换为直方图。
from matplotlib import pyplot as plt import numpy as np a = np.array([22,87,5,43,56,73,55,54,11,20,51,5,79,31,27]) plt.hist(a, bins = [0,20,40,60,80,100]) plt.title("histogram") plt.show()
#结果如下