人工智能之数据分析 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)

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

python 复制代码
data = np.random.rand(10, 10)
plt.imshow(data, cmap='hot', interpolation='nearest')
plt.colorbar()
plt.title("Heatmap")
plt.show()

更推荐使用 Seabornsns.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:gitee.com/wy185850518...

《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》

相关推荐
会飞的老朱1 小时前
医药集团数智化转型,智能综合管理平台激活集团管理新效能
大数据·人工智能·oa协同办公
聆风吟º3 小时前
CANN runtime 实战指南:异构计算场景中运行时组件的部署、调优与扩展技巧
人工智能·神经网络·cann·异构计算
Codebee5 小时前
能力中心 (Agent SkillCenter):开启AI技能管理新时代
人工智能
聆风吟º5 小时前
CANN runtime 全链路拆解:AI 异构计算运行时的任务管理与功能适配技术路径
人工智能·深度学习·神经网络·cann
uesowys6 小时前
Apache Spark算法开发指导-One-vs-Rest classifier
人工智能·算法·spark
AI_56786 小时前
AWS EC2新手入门:6步带你从零启动实例
大数据·数据库·人工智能·机器学习·aws
User_芊芊君子6 小时前
CANN大模型推理加速引擎ascend-transformer-boost深度解析:毫秒级响应的Transformer优化方案
人工智能·深度学习·transformer
智驱力人工智能6 小时前
小区高空抛物AI实时预警方案 筑牢社区头顶安全的实践 高空抛物检测 高空抛物监控安装教程 高空抛物误报率优化方案 高空抛物监控案例分享
人工智能·深度学习·opencv·算法·安全·yolo·边缘计算
qq_160144876 小时前
亲测!2026年零基础学AI的入门干货,新手照做就能上手
人工智能
Howie Zphile6 小时前
全面预算管理难以落地的核心真相:“完美模型幻觉”的认知误区
人工智能·全面预算