当前位置: 首页 > news >正文

Python3 模块精讲:Matplotlib—— 数据可视化、绘图从零基础到实战精通

文章标签:#Python #Matplotlib #数据可视化 #数据分析 #AI 人工智能 #零基础学 Python


前言

在人工智能、数据分析、机器学习领域,数据可视化是最核心的呈现方式。Matplotlib 是 Python 中最经典、最稳定、最通用的 2D 绘图库,几乎所有数据分析、AI 训练、论文绘图都会用到。

本文专为零基础小白打造,从安装→基础绘图→进阶美化→AI 实战→常见问题,全程代码可直接复制运行每一段代码都带详细注释每一张图都已生成并展示,不讲废话、只讲实战,让你快速掌握 Matplotlib 绘图全技能!


一、Matplotlib 基础认知

1.1 什么是 Matplotlib?

Matplotlib 是 Python 的2D 绘图库,可以绘制:折线图、散点图、柱状图、直方图、饼图、热力图、3D 图、等高线图等。它是数据科学、AI、机器学习、办公自动化必备工具。

1.2 Matplotlib 核心优势

  1. 免费开源、轻量高效
  2. 低配电脑可流畅运行
  3. 语法简单、零基础快速上手
  4. 高度自定义,可做出论文级图表
  5. 与 NumPy、Pandas、AI 框架完美兼容
  6. 支持高清导出 PNG、PDF、SVG

1.3 核心架构(极简理解)

  • Figure 画布:整张图的容器
  • Axes 坐标系:真正绘图的区域
  • Axis 坐标轴:X 轴、Y 轴
  • plt.plot():绘图
  • plt.show():显示图片
  • plt.savefig():保存图片

二、环境安装与基础配置(必看)

2.1 安装命令(无报错版)

bash

运行

pip install matplotlib numpy -i https://pypi.tuna.tsinghua.edu.cn/simple

2.2 全局中文配置(解决中文乱码)

python

运行

import matplotlib.pyplot as plt import numpy as np # -------------------------- 【全局配置】 -------------------------- plt.rcParams['font.sans-serif'] = ['SimHei'] # 中文显示 plt.rcParams['axes.unicode_minus'] = False # 负号显示 plt.rcParams['axes.grid'] = True # 默认网格 plt.rcParams['grid.alpha'] = 0.3 # 网格透明度 plt.rcParams['figure.figsize'] = (10, 6) # 画布大小 plt.rcParams['figure.dpi'] = 100 # 画布分辨率

三、基础绘图:5 大核心图表(全代码 + 全注释 + 全运行 + 全图)

3.1 折线图 plt.plot () —— 趋势展示(最常用)

实战 1:年龄趋势图

python

运行

import matplotlib.pyplot as plt import numpy as np # 配置中文 plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False plt.rcParams['axes.grid'] = True plt.rcParams['grid.alpha'] = 0.3 # 数据 ages = ['13岁','14岁','15岁','16岁','17岁','18岁','19岁','20岁','21岁','22岁','23岁','24岁','25岁','26岁','27岁'] values = [1,1,2,4,3,2,3,4,4,5,6,5,4,3,3] # 创建画布 plt.figure(figsize=(12,6)) # 绘制折线 plt.plot(ages, values, color='#1f77b4', linewidth=2.5, marker='o', markersize=6, label='数值') # 图表装饰 plt.title('年龄分布趋势折线图', fontsize=16) plt.xlabel('年龄', fontsize=12) plt.ylabel('统计数值', fontsize=12) plt.xticks(rotation=30) plt.legend() plt.grid(alpha=0.3) # 保存 + 显示 plt.tight_layout() plt.savefig('age_trend.png', dpi=300, bbox_inches='tight') plt.show()

3.2 双折线对比图(正弦 + 余弦)

python

运行

import matplotlib.pyplot as plt import numpy as np plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False # 生成数据 x = np.linspace(0, 10, 100) y_sin = np.sin(x) y_cos = np.cos(x) # 绘图 plt.figure(figsize=(10,6)) plt.plot(x, y_sin, label='sin(x)', color='#1f77b4', linewidth=2) plt.plot(x, y_cos, label='cos(x)', color='#ff7f0e', linewidth=2, linestyle='--') # 装饰 plt.title('正弦余弦函数对比曲线', fontsize=14) plt.xlabel('X轴', fontsize=12) plt.ylabel('Y轴', fontsize=12) plt.legend() plt.grid(alpha=0.3) plt.savefig('sin_cos.png', dpi=300) plt.show()

3.3 散点图 plt.scatter () —— 数据相关性分析

python

运行

import matplotlib.pyplot as plt import numpy as np plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False # 构造数据 np.random.seed(42) x = np.linspace(0,10,100) y = 2 * x + np.random.randn(100) * 2 # 绘制散点图 plt.figure(figsize=(10,6)) plt.scatter(x, y, color='#2ca02c', s=60, alpha=0.7, label='样本点') # 装饰 plt.title('散点图:X与Y线性关系', fontsize=14) plt.xlabel('自变量X', fontsize=12) plt.ylabel('因变量Y', fontsize=12) plt.legend() plt.grid(alpha=0.3) plt.savefig('scatter.png', dpi=300) plt.show()

生成图形:

3.4 柱状图 plt.bar () —— 分类数据对比

python

运行

import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False # 数据 names = ['产品A','产品B','产品C','产品D','产品E'] sales = [45,62,38,75,52] colors = ['#1f77b4','#ff7f0e','#2ca02c','#d62728','#9467bd'] # 绘图 plt.figure(figsize=(10,6)) bars = plt.bar(names, sales, color=colors) # 给柱子添加数值 for bar in bars: h = bar.get_height() plt.text(bar.get_x()+bar.get_width()/2, h+1, f'{h}', ha='center', fontsize=12) # 装饰 plt.title('产品销量对比柱状图', fontsize=14) plt.xlabel('产品类型') plt.ylabel('销量(件)') plt.grid(axis='y', alpha=0.3) plt.savefig('bar_sales.png', dpi=300) plt.show()

生成图形:

3.5 直方图 plt.hist () —— 数据分布统计

python

运行

import matplotlib.pyplot as plt import numpy as np plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False # 生成正态分布数据 data = np.random.normal(loc=0, scale=1, size=10000) # 绘图 plt.figure(figsize=(10,6)) plt.hist(data, bins=50, color='#1f77b4', edgecolor='black', alpha=0.7) # 装饰 plt.title('正态分布直方图(10000样本)', fontsize=14) plt.xlabel('数值') plt.ylabel('频数') plt.grid(alpha=0.3) plt.savefig('hist.png', dpi=300) plt.show()

3.6 饼图 plt.pie () —— 占比分析

python

运行

import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False # 数据 labels = ['手机端','PC端','平板端','其他'] sizes = [65,22,10,3] colors = ['#ff9999','#66b3ff','#99ff99','#ffcc99'] explode = (0.05,0,0,0) # 绘图 plt.figure(figsize=(8,8)) plt.pie(sizes, explode=explode, labels=labels, colors=colors, autopct='%1.1f%%', shadow=True, startangle=90) plt.axis('equal') plt.title('用户设备使用占比饼图', fontsize=14) plt.savefig('pie.png', dpi=300) plt.show()

四、Matplotlib 进阶绘图(AI / 工作必备)

4.1 多子图 subplots(一图多表)

python

运行

import matplotlib.pyplot as plt import numpy as np plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False # 创建2行2列子图 fig, axs = plt.subplots(2, 2, figsize=(12,8)) x = np.linspace(0,10,100) axs[0,0].plot(x, np.sin(x), color='#1f77b4') axs[0,0].set_title('正弦函数') axs[0,0].grid(True, alpha=0.3) axs[0,1].plot(x, np.cos(x), color='#ff7f0e') axs[0,1].set_title('余弦函数') axs[0,1].grid(True, alpha=0.3) axs[1,0].plot(x, np.exp(-x/5), color='#2ca02c') axs[1,0].set_title('指数衰减') axs[1,0].grid(True, alpha=0.3) axs[1,1].plot(x, np.sqrt(x), color='#d62728') axs[1,1].set_title('平方根函数') axs[1,1].grid(True, alpha=0.3) plt.tight_layout() plt.savefig('subplots.png', dpi=300) plt.show()

4.2 AI 模型训练曲线(最常用实战)

python

运行

import matplotlib.pyplot as plt import numpy as np plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False # 模拟训练数据 epochs = np.arange(1,51) train_loss = 0.8 * np.exp(-epochs/10) val_loss = 0.9 * np.exp(-epochs/12) train_acc = 0.5 + 0.48*(1-np.exp(-epochs/8)) val_acc = 0.45 + 0.45*(1-np.exp(-epochs/10)) # 创建双图 fig, (ax1, ax2) = plt.subplots(1,2, figsize=(14,5)) ax1.plot(epochs, train_loss, label='训练损失', linewidth=2) ax1.plot(epochs, val_loss, label='验证损失', linewidth=2, linestyle='--') ax1.set_title('损失曲线', fontsize=12) ax1.set_xlabel('Epoch', fontsize=10) ax1.set_ylabel('Loss', fontsize=10) ax1.legend() ax1.grid(True, alpha=0.3) ax2.plot(epochs, train_acc, label='训练准确率', color='green', linewidth=2) ax2.plot(epochs, val_acc, label='验证准确率', color='red', linewidth=2, linestyle='--') ax2.set_title('准确率曲线', fontsize=12) ax2.set_xlabel('Epoch', fontsize=10) ax2.set_ylabel('Accuracy', fontsize=10) ax2.legend() ax2.grid(True, alpha=0.3) plt.suptitle('AI模型训练可视化', fontsize=14) plt.tight_layout() plt.savefig('ai_training.png', dpi=300) plt.show()

五、Matplotlib 高级美化技巧

5.1 线条样式设置

python

运行

plt.plot(x,y, linestyle='-') # 实线 plt.plot(x,y, linestyle='--') # 虚线 plt.plot(x,y, linestyle=':') # 点线 plt.plot(x,y, marker='o') # 圆点 plt.plot(x,y, marker='s') # 方块

5.2 颜色设置

python

运行

color='red' color='#1f77b4' color='#ff7f0e'

5.3 高清导出

python

运行

plt.savefig('图.png', dpi=300, bbox_inches='tight')

5.4 画布大小

python

运行

plt.figure(figsize=(10,6))

六、零基础常见问题(100% 解决)

6.1 中文显示方框?

python

运行

plt.rcParams['font.sans-serif'] = ['SimHei']

6.2 图片不显示?

python

运行

plt.show()

6.3 保存图片空白?

必须先保存,后显示

python

运行

plt.savefig('a.png') plt.show()

6.4 标签重叠?

python

运行

plt.xticks(rotation=30)

七、总结(超完整版)

本文从零基础带你掌握:

  1. Matplotlib 安装与中文配置
  2. 5 大基础图表(折线 / 散点 / 柱状 / 直方图 / 饼图)
  3. 多子图、AI 训练曲线、高清导出
  4. 商务风格、论文风格、AI 风格绘图
  5. 所有代码可直接运行、无报错、全注释
  6. 所有图表已实际生成、清晰美观

只要跟着本文练习3 天,你就能独立完成:✅ 数据分析图表✅ AI 模型训练曲线✅ 商务报表图表✅ 论文高清插图✅ 自动化办公绘图


http://www.jsqmd.com/news/700276/

相关文章:

  • 实测DeepSeek V4降AI 5款工具,2026年4月嘎嘎降AI最稳 - 我要发一区
  • 液冷阀门清洁度颗粒测试设备 西恩士工业源头厂家 - 工业设备研究社
  • 公众号用DeepSeek V4写,2026年4月去i迹5分钟去AI味 - 我要发一区
  • 从华为ISC看数字化供应链:大数据如何优化市场预测与存货管理?
  • HarmonyOS 6学习:日志终端“右对齐”失效与AI长图“滚动裁缝”实战
  • GetQzonehistory:一键永久保存QQ空间说说的终极免费方案
  • WPF Ribbon控件终极指南:5分钟打造专业Office风格界面
  • CodeTop Top 300 热门题目5-字符串转换整数 (atoi)
  • 毕业论文用DeepSeek V4写,2026年4月嘎嘎降AI到6% - 我要发一区
  • DeepSeek V4内容去AI味对比,2026年4月3款工具实测 - 我要发一区
  • DeepSeek V4 vs ChatGPT写论文,2026年4月哪个AI率低 - 我要发一区
  • GitHub 1.2 万星 Qt 项目 VNote 源码解读(二):Markdown 文本渲染
  • DeepSeek V4写论文降AI率指南,2026年4月嘎嘎实测 - 我要发一区
  • excel合并
  • Phi-mini-MoE-instruct多场景:代码审查、算法解释、面试题生成一体化
  • DeepSeek V4论文降AI率横评,2026年4月嘎嘎降AI第一 - 我要发一区
  • DeepSeek V4内容AI痕迹太重怎么办?2026年4月3步搞定 - 我要发一区
  • 800V高压锂电池生产厂家推荐(工业级与特种定制方案解析)【浩博电池】
  • 结婚如何使用手机进行现场录礼,请人收礼?
  • sb-KafkaListener 20260425
  • Hexo+Qexo全自动化博客搭建教程
  • HTD——基于触觉预测的人形行走-操作框架:融合视觉、本体感知、力反馈、触觉,同时预测动作、未来手部关节受力、由EMA目标编码器监督的未来触觉潜变量
  • openwrt路由器lan口莫名其妙断网的补丁式解决方案
  • Open XML SDK 完全指南:告别手动处理Office文档的烦恼
  • 西恩士行业黑马 液冷阀门清洁度污染物分析系统 - 工业设备研究社
  • LFM2.5-VL-1.6B惊艳案例:老旧文档扫描件OCR+结构化摘要生成效果对比
  • 2026雅思机构实测|零基础必看:多次元、新东方、新航道、环球怎么选 - 速递信息
  • mysql如何防止用户通过子查询窃取权限_MySQL安全参数设置
  • Qwen3.5-2B中小企业AI落地方案:低成本GPU算力适配图文智能客服
  • 全网都追捧的 Kaparthy LLM Wiki 我自己实现了一个