Matplotlib与NumPy结合使用技术讲解
简介
Matplotlib 是 Python 的一个绘图库,常与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。本文将详细介绍如何使用 Matplotlib 和 NumPy 进行数据可视化,并提供实例代码和注释。
安装
pip3 安装
在 Python 环境中,可以使用 pip3 命令安装 Matplotlib:
pip3 install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
Linux 系统安装
对于 Linux 用户,可以使用包管理器安装:
- Debian / Ubuntu:
sudo apt-get install python-matplotlib
- Fedora / Redhat:
sudo yum install python-matplotlib
安装完成后,可以使用以下命令检查是否成功安装了 Matplotlib:
pip3 list | grep matplotlib
实例:基本绘图
以下是一个基本的绘图实例,展示了如何使用 Matplotlib 和 NumPy 绘制一条直线。
import numpy as np
from matplotlib import pyplot as plt
# 创建 x 轴的值
x = np.arange(1, 11)
# 计算 y 轴的值,y = 2x + 5
y = 2 * x + 5
# 设置图表标题和轴标签
plt.title("Matplotlib demo")
plt.xlabel("x axis caption")
plt.ylabel("y axis caption")
# 绘制直线
plt.plot(x, y)
# 显示图形
plt.show()
图形中文显示
Matplotlib 默认不支持中文显示,可以通过指定字体来解决这个问题。这里使用思源黑体作为示例。
import numpy as np
from matplotlib import pyplot as plt
import matplotlib
# 设置中文字体
zhfont = matplotlib.font_manager.FontProperties(fname="SourceHanSansSC-Bold.otf")
# 创建 x 轴和 y 轴的值
x = np.arange(1, 11)
y = 2 * x + 5
# 设置图表标题和轴标签,使用中文
plt.title("测试", fontproperties=zhfont)
plt.xlabel("x 轴", fontproperties=zhfont)
plt.ylabel("y 轴", fontproperties=zhfont)
# 绘制直线
plt.plot(x, y)
# 显示图形
plt.show()
绘制正弦波
以下实例展示了如何使用 Matplotlib 生成正弦波图。
import numpy as np
from matplotlib import pyplot as plt
# 创建 x 轴的值,从 0 到 3π,步长为 0.1
x = np.arange(0, 3 * np.pi, 0.1)
# 计算 y 轴的值,y = sin(x)
y = np.sin(x)
# 设置图表标题
plt.title("sine wave form")
# 绘制正弦波
plt.plot(x, y)
# 显示图形
plt.show()
subplot() 函数
subplot()
函数允许在同一图中绘制不同的图形。以下实例绘制正弦和余弦值:
import numpy as np
from matplotlib import pyplot as plt
# 创建 x 轴的值
x = np.arange(0, 3 * np.pi, 0.1)
# 计算 y 轴的值
y_sin = np.sin(x)
y_cos = np.cos(x)
# 绘制第一个子图(正弦)
plt.subplot(2, 1, 1)
plt.plot(x, y_sin)
plt.title('Sine')
# 绘制第二个子图(余弦)
plt.subplot(2, 1, 2)
plt.plot(x, y_cos)
plt.title('Cosine')
# 显示图形
plt.show()
bar() 函数
bar()
函数用于生成条形图。以下实例生成两组 x 和 y 数组的条形图。
from matplotlib import pyplot as plt
# 定义 x 和 y 值
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.histogram() 函数
numpy.histogram()
函数是数据的频率分布的图形表示。以下实例展示了如何使用该函数。
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.hist() 函数
plt.hist()
函数可以将直方图的数字表示转换为图形。
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()
以上是 Matplotlib 与 NumPy 结合使用的详细介绍和实例。希望这些内容能帮助你更好地理解和使用这两个强大的库进行数据可视化。