人工智能之数据分析 Matplotlib
第四章 图形类型
@
目录
- 人工智能之数据分析 Matplotlib
- 前言
- 一、散点图(Scatter Plot)
- 用途
- 基本语法
- 示例
- 二、柱形图(Bar Chart)
- 用途
- 垂直柱形图
- 水平柱形图
- 示例
- 三、饼图(Pie Chart)
- 用途
- 基本语法
- 示例
- 四、直方图(Histogram)
- 用途
- 基本语法
- 示例
- 五、其他常用图表
- 1. 折线图(Line Plot)
- 2. 箱线图(Box Plot)
- 3. 面积图(Area Plot)
- 4. 热力图(Heatmap)
- 5. 3D 图(需
mpl_toolkits.mplot3d)- 6. 子图(Multiple Subplots)
- 六、选择建议
- 补充:美化建议
- 后续
- 资料关注
前言
Matplotlib 支持多种图表类型。本文将详细介绍 散点图、柱形图、饼图、直方图 以及其他常见图表(如箱线图、热力图、面积图、3D 图等)的绘制方法、参数说明和典型应用场景。
一、散点图(Scatter Plot)
用途
显示两个变量之间的关系,常用于观察相关性、聚类或异常值。
基本语法
plt.scatter(x, y, s=None, c=None, marker=None, cmap=None, alpha=None)
x, y:数据点坐标s:点的大小(可为标量或数组)c:颜色(可为单色、颜色列表或数值映射到 colormap)marker:标记样式(如'o','^','s')alpha:透明度(0~1)cmap:颜色映射(配合数值型c使用)
示例
import matplotlib.pyplot as plt
import numpy as npx = np.random.randn(100)
y = np.random.randn(100)
colors = np.random.rand(100)
sizes = 1000 * np.random.rand(100)plt.scatter(x, y, c=colors, s=sizes, alpha=0.6, cmap='viridis')
plt.colorbar() # 显示颜色条
plt.title("Scatter Plot with Color and Size")
plt.show()

二、柱形图(Bar Chart)
用途
比较不同类别之间的数值大小。
垂直柱形图
plt.bar(x, height, width=0.8, color=None, label=None)
水平柱形图
plt.barh(y, width, height=0.8)
示例
categories = ['A', 'B', 'C', 'D']
values = [3, 7, 5, 9]plt.bar(categories, values, color='skyblue')
plt.title("Bar Chart")
plt.ylabel("Value")
plt.show()

💡 可叠加多个
bar()实现分组或堆叠柱状图。
三、饼图(Pie Chart)
用途
显示各部分占总体的比例(适用于分类较少的情况)。
基本语法
plt.pie(sizes, labels=None, autopct=None, startangle=0, explode=None, colors=None)
sizes:各扇区大小(自动归一化)labels:标签autopct='%1.1f%%':显示百分比explode:突出某一部分(如[0, 0.1, 0, 0])startangle:起始角度(默认从 x 轴开始)
示例
sizes = [25, 35, 20, 20]
labels = ['Apple', 'Banana', 'Cherry', 'Date']
explode = (0, 0.1, 0, 0) # 突出 Bananaplt.pie(sizes, labels=labels, autopct='%1.1f%%', explode=explode, startangle=90)
plt.title("Pie Chart")
plt.axis('equal') # 保证圆形
plt.show()

四、直方图(Histogram)
用途
展示数据的分布情况(频率分布)。
基本语法
plt.hist(data, bins=10, range=None, density=False, alpha=1.0, color=None)
data:一维数组bins:分箱数量(整数或边界列表)density=True:归一化为概率密度(面积=1)alpha:透明度(便于叠加多个直方图)
示例
data = np.random.normal(100, 15, 1000) # 正态分布plt.hist(data, bins=30, color='lightgreen', edgecolor='black', alpha=0.7)
plt.title("Histogram")
plt.xlabel("Value")
plt.ylabel("Frequency")
plt.show()

五、其他常用图表
1. 折线图(Line Plot)
plt.plot(x, y, linestyle='-', marker='o')
最基础的连续数据趋势图。
2. 箱线图(Box Plot)
显示数据的五数概括(最小值、Q1、中位数、Q3、最大值)及异常值。
plt.boxplot([data1, data2], labels=['Group1', 'Group2'])

3. 面积图(Area Plot)
强调累积总量随时间的变化。
plt.stackplot(x, y1, y2, labels=['A', 'B'], alpha=0.7)

4. 热力图(Heatmap)
用颜色表示矩阵中数值大小(需结合 imshow 或 pcolormesh)。
data = np.random.rand(10, 10)
plt.imshow(data, cmap='hot', interpolation='nearest')
plt.colorbar()
plt.title("Heatmap")
plt.show()

更推荐使用 Seaborn 的
sns.heatmap(),功能更强大。
5. 3D 图(需 mpl_toolkits.mplot3d)
from mpl_toolkits.mplot3d import Axes3Dfig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
x = np.random.randn(100)
y = np.random.randn(100)
z = np.random.randn(100)
ax.scatter(x, y, z)
plt.show()

6. 子图(Multiple Subplots)
使用 plt.subplots() 创建多图布局:
import matplotlib.pyplot as plt import numpy as np
# 创建 2x2 子图
fig, axs = plt.subplots(2, 2, figsize=(10, 8))
# 第一个子图:折线图
x = np.linspace(0, 10, 100)
y = np.sin(x)
axs[0, 0].plot(x, y)
axs[0, 0].set_title('Sine Wave')
# 第二个子图:散点图
axs[0, 1].scatter([1, 2, 3], [4, 5, 6])
axs[0, 1].set_title('Scatter')
# 第三个:柱状图
axs[1, 0].bar(['A', 'B', 'C'], [3, 7, 5])
axs[1, 0].set_title('Bar Chart')
# 第四个:直方图
data = np.random.randn(1000)
axs[1, 1].hist(data, bins=20)
axs[1, 1].set_title('Histogram')
plt.tight_layout()
plt.show()

六、选择建议
| 图表类型 | 适用场景 |
|---|---|
| 散点图 | 两变量关系、聚类分析 |
| 柱形图 | 类别间比较 |
| 饼图 | 构成比例(类别 ≤ 5) |
| 直方图 | 数据分布形态 |
| 箱线图 | 分布离散程度、异常值检测 |
| 折线图 | 时间序列、趋势变化 |
| 热力图 | 矩阵/相关性可视化 |
补充:美化建议
- 使用
plt.style.use('seaborn-v0_8')或'ggplot'改变整体风格 - 设置字体:
plt.rcParams['font.sans-serif'] = ['SimHei'](中文支持) - 保存图像:
plt.savefig('chart.png', dpi=300, bbox_inches='tight')
后续
python过渡项目部分代码已经上传至gitee,后续会逐步更新。
资料关注
公众号:咚咚王
gitee:https://gitee.com/wy18585051844/ai_learning

《Python编程:从入门到实践》
《利用Python进行数据分析》
《算法导论中文第三版》
《概率论与数理统计(第四版) (盛骤) 》
《程序员的数学》
《线性代数应该这样学第3版》
《微积分和数学分析引论》
《(西瓜书)周志华-机器学习》
《TensorFlow机器学习实战指南》
《Sklearn与TensorFlow机器学习实用指南》
《模式识别(第四版)》
《深度学习 deep learning》伊恩·古德费洛著 花书
《Python深度学习第二版(中文版)【纯文本】 (登封大数据 (Francois Choliet)) (Z-Library)》
《深入浅出神经网络与深度学习+(迈克尔·尼尔森(Michael+Nielsen)》
《自然语言处理综论 第2版》
《Natural-Language-Processing-with-PyTorch》
《计算机视觉-算法与应用(中文版)》
《Learning OpenCV 4》
《AIGC:智能创作时代》杜雨+&+张孜铭
《AIGC原理与实践:零基础学大语言模型、扩散模型和多模态模型》
《从零构建大语言模型(中文版)》
《实战AI大模型》
《AI 3.0》
