跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python算法

Python 数据可视化绘图基础与实战指南

综述由AI生成基于 Matplotlib 库的 Python 数据可视化方法。涵盖二维曲线、散点图、柱状图及三维曲面图的绘制技巧,包括坐标轴控制、刻度格式设置、多窗格布局等核心功能。内容还补充了常用图表类型,并针对中文显示乱码、图片保存分辨率等常见问题提供解决方案。通过丰富的代码示例,帮助读者快速掌握科学计算数据的图形化表达,适用于数据分析、科研绘图及工程演示场景。

MongoKing发布于 2025/2/6更新于 2026/6/318 浏览
Python 数据可视化绘图基础与实战指南

Python 数据可视化绘图基础与实战指南

1. 二维图像绘制

1.1 二维曲线图

Matplotlib 是 Python 中最常用的绘图库,plot() 函数用于绘制线性图表。

基本语法:

plt.plot(x, y, ls="-", lw=1.5, label=None)
  • x, y:横坐标和纵坐标数组。
  • ls (linestyle):线型。例如 'r*-' 表示红色实线加星号标记。
  • lw (linewidth):线宽。
  • label:图例标签。

参数详解:

  • 颜色 (color):单字符简写如 b(蓝), g(绿), r(红), c(青), m(紫), y(黄), k(黑), w(白)。也可用十六进制色值。
  • 标记 (marker):形状包括 .(点), o(圆), v(下三角), ^(上三角), s(方块), p(五边形), *(星号) 等。
  • 线型 (linestyle):-(实线), --(虚线), -.(点划线), :(点线)。

代码示例:

import numpy as np
import matplotlib.pyplot as plt

# 设置中文字体支持
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

x = np.arange(0, 12, 0.3)
y1 = np.sin(x)
y2 = np.cos(x)

plt.figure(figsize=(10, 6))  # 指定画布大小
plt.subplot(1, 2, 1)
plt.plot(x, y1, )
plt.title()
plt.xlabel()
plt.ylabel()
plt.grid()
plt.legend([])

plt.subplot(, , )
plt.plot(x, y1, , label=)
plt.plot(x, y2, , label=)
plt.title()
plt.legend()
plt.tight_layout()
plt.show()
'r*-'
"正弦曲线"
'x 轴'
'y 轴'
True
'sin(x)'
1
2
2
'r*-'
'sinx'
'g.--'
'cosx'
'正弦与余弦对比'

1.2 二维散点图

散点图用于展示两个变量之间的关系或分布情况。

基本语法:

plt.scatter(x, y, s=20, c='b', marker='o', cmap=None, alpha=1.0)
  • s:点的面积(像素平方)。
  • c:点的颜色,可传单个颜色或数组。
  • cmap:当 c 为数值时,指定颜色映射表(如 'viridis', 'rainbow')。
  • alpha:透明度,范围 0~1。

代码示例:

size = 100
x = np.random.uniform(size=size)
y = np.random.uniform(size=size)
s = np.random.uniform(5, 400, size=size)
c = np.random.uniform(size=size)
lw = np.random.uniform(1, 4, size=size)

plt.figure()
plt.subplot(1, 2, 1)
plt.scatter(x, y, s=s, c=c, alpha=0.5, linewidths=lw, edgecolors='m')
plt.title("带边框的散点图")

plt.subplot(1, 2, 2)
plt.scatter(x, y, s=s, c=c, cmap='rainbow', alpha=0.5)
plt.title("彩色映射散点图")
plt.colorbar(label='Value')
plt.show()

1.3 其他常用二维图表

除了曲线和散点,柱状图和饼图也是数据可视化的基础。

柱状图 (Bar Chart):

plt.bar(x, height, width=0.8, color='blue', label='Data')

饼图 (Pie Chart):

labels = ['A', 'B', 'C']
sizes = [30, 40, 30]
plt.pie(sizes, labels=labels, autopct='%1.1f%%')

1.4 图像修饰与布局

通过控制坐标轴、刻度和网格,可以优化图表的可读性。

  • 窗口设置:figure(num, figsize, dpi) 创建新窗口。
  • 标题与标签:title(), xlabel(), ylabel()。
  • 范围控制:xlim(), ylim(), axis()。
  • 刻度定制:xticks(ticks, labels), yticks()。
  • 分割线:vlines(), hlines()。
  • 文本标注:text(x, y, s)。
  • 多子图:subplot(rows, cols, num)。
  • 保存图像:savefig(name, dpi),支持 png, pdf, svg 等格式。

刻度间隔控制: 使用 MultipleLocator 精确控制主刻度间隔。

from matplotlib.pyplot import MultipleLocator
ax = plt.gca()
ax.xaxis.set_major_locator(MultipleLocator(3.14))

刻度格式控制: 使用 FormatStrFormatter 格式化显示数字。

from matplotlib.ticker import FormatStrFormatter
ax.yaxis.set_major_formatter(FormatStrFormatter('%.1f'))

2. 三维图像绘制

2.1 三维坐标轴对象

绘制三维图需导入 Axes3D 模块。

创建方法:

from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

注意:即使不直接使用 Axes3D 类,也需导入该模块以注册投影类型。

2.2 三维曲线

t = np.linspace(0, 20, 70)
x = np.sin(t)
y = np.cos(t)
z = 2 * t
ax.plot(x, y, z, 'r*-')

2.3 三维散点图

size = 150
x = np.random.randint(0, 30, size)
y = np.random.randint(0, 30, size)
z = np.random.randint(0, 30, size)
ax.scatter(x, y, z, s=50, c='r', alpha=0.8)

2.4 三维曲面与网格

曲面图常用于展示函数 $z = f(x, y)$ 的形态。

核心步骤:

  1. 生成网格数据:np.meshgrid()。
  2. 计算 Z 值。
  3. 调用 plot_surface()。
x = np.linspace(0, 10, 50)
y = np.linspace(0, 9, 45)
X, Y = np.meshgrid(x, y)
Z = np.sin(X) + np.cos(Y)

fig = plt.figure()
ax = fig.add_subplot(1, 2, 1, projection='3d')
ax.plot_surface(X, Y, Z, cmap='hot')

ax = fig.add_subplot(1, 2, 2, projection='3d')
ax.plot_surface(X, Y, Z, cmap='rainbow')
plt.show()

3. 常见问题与最佳实践

3.1 中文乱码处理

Matplotlib 默认不支持中文,需配置字体。

plt.rcParams['font.sans-serif'] = ['SimHei']  # Windows
# Linux/Mac 可能需要 'Arial Unicode MS' 或 'DejaVu Sans'
plt.rcParams['axes.unicode_minus'] = False    # 解决负号显示为方块问题

3.2 图片保存质量

使用高分辨率保存适合出版或演示。

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

bbox_inches='tight' 可去除多余空白边距。

3.3 性能优化

对于大规模数据(超过 10 万点),建议使用 scatter 的 antialiased=False 选项或降低采样率以提升渲染速度。

4. 总结

本文系统讲解了 Matplotlib 在二维及三维绘图中的应用。从基础的曲线绘制到复杂的曲面展示,涵盖了坐标轴控制、样式定制及常见问题的解决方案。掌握这些技能将显著提升数据分析结果的直观性与专业性。在实际项目中,建议结合 Pandas 进行数据预处理,利用 Seaborn 进行更高级的统计绘图,构建完整的数据分析工作流。

目录

  1. Python 数据可视化绘图基础与实战指南
  2. 1. 二维图像绘制
  3. 1.1 二维曲线图
  4. 设置中文字体支持
  5. 1.2 二维散点图
  6. 1.3 其他常用二维图表
  7. 1.4 图像修饰与布局
  8. 2. 三维图像绘制
  9. 2.1 三维坐标轴对象
  10. 2.2 三维曲线
  11. 2.3 三维散点图
  12. 2.4 三维曲面与网格
  13. 3. 常见问题与最佳实践
  14. 3.1 中文乱码处理
  15. Linux/Mac 可能需要 'Arial Unicode MS' 或 'DejaVu Sans'
  16. 3.2 图片保存质量
  17. 3.3 性能优化
  18. 4. 总结
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • DeepSeek 各版本说明与优缺点分析
  • Web-Check 结合 cpolar 实现远程网站安全检测
  • 豆包·图像创作模型 Seedream 4.0 多图融合功能体验与评测
  • TK X-Gnarly:基于 AI 辅助的 JSVMP 纯算还原方案
  • Linux 一切皆文件:深入理解文件与文件 IO
  • Rust WebAssembly 开发实战:构建高性能前端应用
  • MySQL 事务详解:ACID 特性、引擎支持与提交方式
  • C++ 从零开始封装 Map 与 Set:实现与优化
  • Python + Bright Data MCP 实时抓取 Google 搜索结果实战
  • Linux 部署本地 AI 大模型与知识库对接指南
  • Python 批量爬取图片入门教程
  • C++ std::max 函数详解与使用指南
  • AI 从“能说会道”到“自主思考”:技术演进与应用全景
  • Midjourney 官网地址查询及中文支持说明
  • AIGC 个性化与定制化内容生成技术与应用
  • 春晚机器人背后的 AI 大模型风口与高薪职业机会
  • Whisper-large-v3 与 FunASR 技术选型与性能调优
  • 机器学习:逻辑回归与线性回归的区别
  • ActiveMQ 延迟投递与定时调度实战指南
  • LightRAG:降低 GraphRAG 落地门槛的轻量级检索增强生成框架

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online