1、安装 Matplotlib
Matplotlib 是一个功能强大且受欢迎的 Python 库,用于生成 2D 图表和图形。它因其灵活性、广泛的功能和用户友好的界面而广泛用于各种科学、工程和数据分析应用。
可以通过 pip 安装,命令如下,
pip install matplotlib
或
python3 -m pip install matplotlib
2、绘制简单的折线图
Matplotlib 的 plot()
函数用于创建和绘制各种类型图表的核心函数之一。它支持多种数据类型和绘图样式,并提供丰富的定制选项。
参数说明:
参数 | 描述 |
x | 一维数组或列表,表示数据点的横坐标。 |
y | 一维数组或列表,表示数据点的纵坐标。 |
color | 指定线条颜色,可以是字符串颜色名或 RGB 颜色值。 |
linewidth | 指定线条宽度。 |
linestyle | 指定线条样式,例如 - (实线)、 -- (虚线)、 -. (点划线) 等。 |
marker | 指定数据点标记形状,例如 o (圆)、 x (叉)、 * (星) 等。 |
markersize | 指定数据点标记大小。 |
label | 指定用于图例的标签。 |
代码如下,
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [2, 4, 5, 7, 8]
plt.plot(x, y, color='red', linestyle='--', marker='o', markersize=10, label='数据1')
# 添加图例
plt.legend()
# 显示图表
plt.show()
2、绘制散点图
Matplotlib 的 scatter()
函数用于绘制散点图,可以将数据点以不同形状和颜色进行可视化,有助于分析数据分布和探索变量之间的关系。
参数说明:
参数 | 描述 |
x | 一维数组或列表,表示数据点的横坐标。 |
y | 一维数组或列表,表示数据点的纵坐标。 |
c | 指定数据点颜色,可以是字符串颜色名、RGB 颜色值或一维数组。 |
s | 指定数据点大小,可以是单个值或一维数组。 |
marker | 指定数据点形状,例如 o (圆)、 x (叉)、 * (星) 等。 |
alpha | 指定数据点透明度,取值范围为 0.0 (完全透明) 到 1.0 (完全不透明)。 |
edgecolors | 指定数据点边缘颜色,可以是字符串颜色名、RGB 颜色值或一维数组。 |
linewidths | 指定数据点边缘宽度,可以是单个值或一维数组。 |
代码如下,
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [2, 4, 5, 7, 8]
plt.scatter(x, y, c='blue', s=50, marker='o', alpha=0.8, edgecolors='black', linewidths=1)
# 添加标题和标签
plt.title('散点图')
plt.xlabel('X 轴')
plt.ylabel('Y 轴')
# 显示图表
plt.show()
3、绘制直方图
Matplotlib 的 hist()
函数用于绘制直方图,可以显示数据的分布情况,并可以直观地了解数据中存在的值、频次以及分布形状。
参数说明:
参数 | 描述 |
x | 一维数组或列表,表示数据点。 |
bins | 指定直方图的柱状图数量,默认为 10。 |
range | 指定直方图的绘制范围,例如 (min_value, max_value)。 |
histtype | 指定直方图的类型,例如 'bar' (柱状图)、 'step' (阶梯图) 等。 |
color | 指定直方图柱状图的颜色,可以是字符串颜色名、RGB 颜色值或一维数组。 |
alpha | 指定直方图柱状图的透明度,取值范围为 0.0 (完全透明) 到 1.0 (完全不透明)。 |
edgecolor | 指定直方图柱状图边缘的颜色,可以是字符串颜色名、RGB 颜色值或一维数组。 |
linewidth | 指定直方图柱状图边缘的宽度。 |
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
data = np.random.normal(loc=5, scale=2, size=1000)
# 绘制直方图
plt.hist(data, bins=20, edgecolor='black')
# 添加标题和标签
plt.title('直方图')
plt.xlabel('数据值')
plt.ylabel('频次')
# 显示图表
plt.show()
4、多图并列显示
Matplotlib 的 subplots()
函数用于创建具有多个子图的图形,它可以在同一页面中显示多个相关的数据可视化效果。
参数 | 描述 |
nrows | 指定子图的行数。 |
ncols | 指定子图的列数。 |
figsize | 指定图形的整体大小,单位为英寸。 |
sharex | 指定是否共享 X 轴,可以是 True (共享)、 False (不共享) 或 'all' (所有子图共享)。 |
sharey | 指定是否共享 Y 轴,可以是 True (共享)、 False (不共享) 或 'all' (所有子图共享)。 |
squeeze | 指定是否将单个子图的返回值转换为 Axes 对象。 |
返回值:
返回值 | 描述 |
fig | Figure 对象,包含整个图形。 |
axes | Axes 对象或列表,包含各个子图。 |
代码如下,
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2 * np.pi, 400)
y = np.sin(x ** 2)
# 创建一个 2x2 的图表布局
fig, axs = plt.subplots(2, 2)
axs[0, 0].plot(x, y)
axs[0, 0].set_title('Simple Plot')
axs[0, 1].scatter(x, y)
axs[0, 1].set_title('Scatter Plot')
axs[1, 0].bar(x, y)
axs[1, 0].set_title('Bar Chart')
axs[1, 1].hist(y, bins=20)
axs[1, 1].set_title('Histogram')
plt.show()
或者
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
# 创建具有两个子图的图形
fig, axes = plt.subplots(nrows=2, ncols=1, sharex=True)
# 绘制数据到子图
axes[0].plot(x, y1)
axes[0].set_title('Sin(x)')
axes[1].plot(x, y2)
axes[1].set_title('Cos(x)')
# 显示图形
plt.show()