《Python 数据可视化:用 Matplotlib 绘制 10 种常用图表》
·
Python 数据可视化:用 Matplotlib 绘制 10 种常用图表
数据可视化是数据分析的核心工具,能直观展示数据模式、趋势和异常。Matplotlib 是 Python 中最流行的绘图库,提供丰富的图表类型。下面我将介绍 10 种常用图表,每种包括简要描述、适用场景和示例代码。所有代码基于 Matplotlib 和 NumPy(假设已导入:import matplotlib.pyplot as plt 和 import numpy as np)。代码可直接运行,但需安装相关库(pip install matplotlib numpy pandas)。
1. 折线图 (Line Plot)
- 描述:用于展示数据随时间或连续变量的变化趋势,如温度变化、销售增长。
- 适用场景:时间序列分析、趋势预测。
- 示例代码:
x = np.linspace(0, 10, 100) # 生成0到10的100个点
y = np.sin(x) # 正弦函数值
plt.plot(x, y, label='正弦曲线')
plt.title('折线图示例')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.legend()
plt.show()
2. 柱状图 (Bar Chart)
- 描述:比较不同类别的数据值,如不同产品的销量。
- 适用场景:分类数据对比、频数统计。
- 示例代码:
categories = ['A', 'B', 'C', 'D']
values = [20, 35, 30, 25]
plt.bar(categories, values, color='skyblue')
plt.title('柱状图示例')
plt.xlabel('类别')
plt.ylabel('数值')
plt.show()
3. 散点图 (Scatter Plot)
- 描述:展示两个变量之间的关系,如身高与体重的相关性。相关系数 $r$ 可量化线性关系强度。
- 适用场景:相关性分析、聚类检测。
- 示例代码:
x = np.random.randn(100) # 随机生成100个点
y = 2 * x + np.random.randn(100) # 带噪声的线性关系
plt.scatter(x, y, alpha=0.6)
plt.title('散点图示例')
plt.xlabel('变量X')
plt.ylabel('变量Y')
plt.show()
4. 饼图 (Pie Chart)
- 描述:显示各部分占整体的比例,如市场份额分布。
- 适用场景:比例分析、组成展示。
- 示例代码:
sizes = [30, 25, 15, 20, 10]
labels = ['A', 'B', 'C', 'D', '其他']
plt.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=90)
plt.title('饼图示例')
plt.show()
5. 直方图 (Histogram)
- 描述:展示数据分布频率,如年龄分布。概率密度函数 $f(x)$ 可描述连续分布。
- 适用场景:数据分布探索、异常值检测。
- 示例代码:
data = np.random.randn(1000) # 正态分布数据
plt.hist(data, bins=30, color='green', alpha=0.7)
plt.title('直方图示例')
plt.xlabel('数值')
plt.ylabel('频数')
plt.show()
6. 箱线图 (Box Plot)
- 描述:展示数据的中位数、四分位数和异常值,如测试成绩分布。
- 适用场景:统计摘要、异常值识别。
- 示例代码:
data = [np.random.randn(100), np.random.randn(100) + 2] # 两组数据
plt.boxplot(data, labels=['组1', '组2'])
plt.title('箱线图示例')
plt.ylabel('数值')
plt.show()
7. 热力图 (Heatmap)
- 描述:用颜色表示矩阵值的大小,如相关系数矩阵或温度分布。
- 适用场景:相关性矩阵、空间数据可视化。
- 示例代码:
data = np.random.rand(5, 5) # 5x5随机矩阵
plt.imshow(data, cmap='viridis')
plt.colorbar()
plt.title('热力图示例')
plt.show()
8. 面积图 (Area Plot)
- 描述:展示累积变化,如多个类别的总和随时间变化。
- 适用场景:累积趋势分析、堆叠数据。
- 示例代码:
x = np.arange(0, 10, 0.1)
y1 = np.sin(x)
y2 = np.cos(x)
plt.fill_between(x, y1, y2, color='orange', alpha=0.4)
plt.title('面积图示例')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.show()
9. 散点矩阵图 (Scatter Matrix)
- 描述:多变量散点图矩阵,用于快速探索多个变量间的关系。
- 适用场景:多变量数据分析、特征工程。
- 示例代码(需 pandas):
import pandas as pd
from pandas.plotting import scatter_matrix
df = pd.DataFrame(np.random.randn(100, 4), columns=['A', 'B', 'C', 'D'])
scatter_matrix(df, alpha=0.8, figsize=(10, 10))
plt.suptitle('散点矩阵图示例')
plt.show()
10. 误差条图 (Error Bar Plot)
- 描述:展示数据点的不确定性,如实验测量误差。误差范围通常用标准差 $\sigma$ 表示。
- 适用场景:科学实验、置信区间展示。
- 示例代码:
x = np.arange(5)
y = [10, 12, 8, 14, 9]
y_err = [1, 1.5, 0.8, 2, 1.2] # 误差值
plt.errorbar(x, y, yerr=y_err, fmt='o', capsize=5)
plt.title('误差条图示例')
plt.xlabel('类别')
plt.ylabel('测量值')
plt.show()
总结
Matplotlib 提供了强大的工具集,覆盖从基础到高级的可视化需求。通过以上 10 种图表,您可以高效探索和展示数据。建议结合真实数据集练习,如使用 Seaborn 库增强美观性。实践是掌握数据可视化的关键——动手编码吧!
更多推荐
所有评论(0)