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()
ndarray
对象x
由np.arange()
函数创建为x
轴上的值。y
轴上的对应值存储在另一个数组对象y
中。 这些值使用matplotlib
软件包的pyplot
子模块的plot()
函数绘制。
图形由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 生成正弦波图。
示例
import numpy as np
import matplotlib.pyplot as plt
# 计算正弦曲线上点的 x 和 y 坐标
x = np.arange(0, 3 * np.pi, 0.1)
y = np.sin(x)
plt.title("sine wave form")
# 使用 matplotlib 来绘制点
plt.plot(x, y)
plt.show()

subplot()
subplot()
函数允许你在同一图中绘制不同的东西。 在下面的脚本中,绘制正弦和余弦值。
示例
import numpy as np
import matplotlib.pyplot as plt
# 计算正弦和余弦曲线上的点的 x 和 y 坐标
x = np.arange(0, 3 * np.pi, 0.1)
y_sin = np.sin(x)
y_cos = np.cos(x)
# 建立 subplot 网格,高为 2,宽为 1
# 激活第一个 subplot
plt.subplot(2, 1, 1)
# 绘制第一个图像
plt.plot(x, y_sin)
plt.title('Sine')
# 将第二个 subplot 激活,并绘制第二个图像
plt.subplot(2, 1, 2)
plt.plot(x, y_cos)
plt.title('Cosine')
# 展示图像
plt.show()
上面的代码应该产生以下输出:

bar()
pyplot
子模块提供bar()
函数来生成条形图。 以下示例生成两组x
和y
数组的条形图。
示例
from matplotlib import pyplot as plt
x = [5,8,10]
y = [12,16,6]
x2 = [6,9,11]
y2 = [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])
hist,bins = np.histogram(a,bins = [0,20,40,60,80,100])
print hist
print bins
输出如下:
[3 4 5 2 1]
[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()
输出如下:

NumPy - IO
ndarray
对象可以保存到磁盘文件并从磁盘文件加载。 可用的 IO 功能有:
load()
和save()
函数处理 numPy 二进制文件(带npy
扩展名)loadtxt()
和savetxt()
函数处理正常的文本文件
NumPy 为ndarray
对象引入了一个简单的文件格式。 这个npy
文件在磁盘文件中,存储重建ndarray
所需的数据、图形、dtype
和其他信息,以便正确获取数组,即使该文件在具有不同架构的另一台机器上。
numpy.save()
numpy.save()
文件将输入数组存储在具有npy
扩展名的磁盘文件中。
import numpy as np
a = np.array([1,2,3,4,5])
np.save('outfile',a)
为了从outfile.npy
重建数组,请使用load()
函数。
import numpy as np
b = np.load('outfile.npy')
print b
输出如下:
array([1, 2, 3, 4, 5])
save()
和load()
函数接受一个附加的布尔参数allow_pickles
。 Python 中的pickle
用于在保存到磁盘文件或从磁盘文件读取之前,对对象进行序列化和反序列化。
savetxt()
以简单文本文件格式存储和获取数组数据,是通过savetxt()
和loadtx()
函数完成的。
示例
import numpy as np
a = np.array([1,2,3,4,5])
np.savetxt(‘out.txt’,a)
b = np.loadtxt(‘out.txt’)
print b
输出如下:
[ 1. 2. 3. 4. 5.]
savetxt()
和loadtxt()
数接受附加的可选参数,例如页首,页尾和分隔符。
NumPy - 实用资源
以下资源包含有关 NumPy 的其他信息。 请使用它们获得更多的深入知识。
转载自https://www.jianshu.com/p/57e3c0a92f3a