人工智能之数据分析 Matplotlib:第四章 图形类型

人工智能之数据分析 Matplotlib

第四章 图形类型


文章目录


前言

Matplotlib 支持多种图表类型。本文将详细介绍 散点图、柱形图、饼图、直方图 以及其他常见图表(如箱线图、热力图、面积图、3D 图等)的绘制方法、参数说明和典型应用场景。


一、散点图(Scatter Plot)

用途

显示两个变量之间的关系,常用于观察相关性、聚类或异常值。

基本语法

python 复制代码
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 使用)

示例

python 复制代码
import matplotlib.pyplot as plt
import numpy as np

x = 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)

用途

比较不同类别之间的数值大小。

垂直柱形图

python 复制代码
plt.bar(x, height, width=0.8, color=None, label=None)

水平柱形图

python 复制代码
plt.barh(y, width, height=0.8)

示例

python 复制代码
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)

用途

显示各部分占总体的比例(适用于分类较少的情况)。

基本语法

python 复制代码
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 轴开始)

示例

python 复制代码
sizes = [25, 35, 20, 20]
labels = ['Apple', 'Banana', 'Cherry', 'Date']
explode = (0, 0.1, 0, 0)  # 突出 Banana

plt.pie(sizes, labels=labels, autopct='%1.1f%%', explode=explode, startangle=90)
plt.title("Pie Chart")
plt.axis('equal')  # 保证圆形
plt.show()

四、直方图(Histogram)

用途

展示数据的分布情况(频率分布)。

基本语法

python 复制代码
plt.hist(data, bins=10, range=None, density=False, alpha=1.0, color=None)
  • data:一维数组
  • bins:分箱数量(整数或边界列表)
  • density=True:归一化为概率密度(面积=1)
  • alpha:透明度(便于叠加多个直方图)

示例

python 复制代码
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)

python 复制代码
plt.plot(x, y, linestyle='-', marker='o')

最基础的连续数据趋势图。


2. 箱线图(Box Plot)

显示数据的五数概括(最小值、Q1、中位数、Q3、最大值)及异常值。

python 复制代码
plt.boxplot([data1, data2], labels=['Group1', 'Group2'])

3. 面积图(Area Plot)

强调累积总量随时间的变化。

python 复制代码
plt.stackplot(x, y1, y2, labels=['A', 'B'], alpha=0.7)

4. 热力图(Heatmap)

用颜色表示矩阵中数值大小(需结合 imshow 或 pcolormesh)。

python 复制代码
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)

python 复制代码
from mpl_toolkits.mplot3d import Axes3D

fig = 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() 创建多图布局:

python 复制代码
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》

相关推荐
迪菲赫尔曼4 小时前
【基础篇 26】第一次在服务器完成训练:准备数据、断线继续、检查成果与备份
运维·服务器·人工智能·机器学习·计算机视觉
三兔测序学社4 小时前
单细胞免疫组库分析3:从 scBCR-seq 序列到 3D 结构-IgFold 与 PyMOL 全流程深度解析
数据分析
小年糕是糕手5 小时前
【AI】用 AI 做自己的个人网站(上):选模板、写提示词,做出第一版
人工智能·app·网页开发·codex·index·styles·0基础教程
硅谷秋水5 小时前
RoboAtom:机器人学习的大规模原子-动作监督
人工智能·机器学习·计算机视觉·机器人
vipxieliang5 小时前
具身智能2026:从实验室演示到万台级量产
人工智能
lucas_AI5 小时前
花旗银行教你算 AI 的账:省下的时间要和审查成本、残余风险记在同一本账上
人工智能
lucas_AI5 小时前
没人教过它化学立体几何,但它悄悄学会了:前沿 LLM 排构象已经超过经典力场
人工智能
kaixin_啊啊5 小时前
【零基础学AI】第 26 章——注意力机制怎样工作
人工智能
硅谷秋水5 小时前
OpenRUA 方法分析
人工智能·机器学习·语言模型·机器人