【深度学习】 Python 和 NumPy 系列教程(廿七):Matplotlib详解:3、多子图和布局:散点矩阵图(Scatter Matrix Plot)

目录

一、前言

二、实验环境

三、Matplotlib详解

1、2d绘图类型

2、3d绘图类型

3、多子图和布局

[1. subplot()函数](#1. subplot()函数)

[2. subplots()函数](#2. subplots()函数)

[3. 散点矩阵图(Scatter Matrix Plot)](#3. 散点矩阵图(Scatter Matrix Plot))


一、前言

Python是一种高级编程语言,由Guido van Rossum于1991年创建。它以简洁、易读的语法而闻名,并且具有强大的功能和广泛的应用领域。Python具有丰富的标准库和第三方库,可以用于开发各种类型的应用程序,包括Web开发、数据分析、人工智能、科学计算、自动化脚本等。

Python本身是一种伟大的通用编程语言,在一些流行的库(numpy,scipy,matplotlib)的帮助下,成为了科学计算的强大环境。本系列将介绍Python编程语言和使用Python进行科学计算的方法,主要包含以下内容:

  • Python:基本数据类型、容器(列表、元组、集合、字典)、函数、类
  • Numpy:数组创建、数组操作、数组数学、广播
  • Matplotlib:2d绘图、3d绘图、图表自定义、多子图和布局
  • IPython:创建笔记本、典型工作流程

二、实验环境

|------------|--------|---|
| matplotlib | 3.5.3 | |
| numpy | 1.21.6 | |
| python | 3.7.16 | |

  • 运行下述命令检查Python版本
bash 复制代码
 python --version 
  • 运行下述代码检查Python、NumPy、Matplotlib版本
python 复制代码
import sys
import numpy as np
import matplotlib

print("Python 版本:", sys.version)
print("NumPy 版本:", np.__version__)
print("matplotlib 版本:", matplotlib.__version__)

三、Matplotlib详解

Matplotlib是一个用于创建数据可视化的Python库。它提供了广泛的绘图选项,能够生成各种类型的图表、图形和可视化效果。下面是Matplotlib的一些主要功能:

  1. 绘图风格和类型:Matplotlib支持各种绘图风格和类型,包括线图、散点图、柱状图、饼图、等高线图、3D图等,可以根据需要选择适合的图表类型来展示和分析数据。

  2. 数据可视化:Matplotlib使得将数据转化为可视化表示变得简单,可以使用Matplotlib绘制图表来展示数据的分布、趋势、关系等,这有助于更好地理解数据和发现潜在的模式和关联。

  3. 图表自定义:Matplotlib提供了丰富的图表自定义选项,可以调整图表的标题、标签、坐标轴、线条样式、颜色等。这使得您能够创建符合特定需求和品味的高质量图表。

  4. 多子图和布局:Matplotlib允许您在单个图像中创建多个子图,以便同时展示多个相关的图表或数据视图。您可以自定义子图的布局和排列,以满足特定的展示需求。

  5. 导出图像:Matplotlib支持将图像导出为多种格式,包括PNG、JPEG、PDF、SVG等。这使得您可以方便地将生成的图表保存为文件,或嵌入到文档、报告和演示文稿中。

无论是进行科学研究、数据分析、报告撰写还是可视化展示,Matplotlib都是一个强大而灵活的工具。它广泛应用于各个领域,如数据科学、机器学习、金融分析、工程可视化等。

1、2d绘图类型

2d绘图(上):折线图、散点图、柱状图、直方图、饼图_QomolangmaH的博客-CSDN博客编辑https://blog.csdn.net/m0_63834988/article/details/132872575?spm=1001.2014.3001.5501编辑https://blog.csdn.net/m0_63834988/article/details/132872575?spm=1001.2014.3001.5501编辑https://blog.csdn.net/m0_63834988/article/details/132872575?spm=1001.2014.3001.5501https://blog.csdn.net/m0_63834988/article/details/132872575?spm=1001.2014.3001.5501

2d绘图(下):箱线图、热力图、面积图、等高线图、极坐标图_QomolangmaH的博客-CSDN博客编辑https://blog.csdn.net/m0_63834988/article/details/132890656?spm=1001.2014.3001.5501编辑https://blog.csdn.net/m0_63834988/article/details/132890656?spm=1001.2014.3001.5501编辑https://blog.csdn.net/m0_63834988/article/details/132890656?spm=1001.2014.3001.5501https://blog.csdn.net/m0_63834988/article/details/132890656?spm=1001.2014.3001.5501

2、3d绘图类型

Matplotlib绘图_QomolangmaH的博客-CSDN博客编辑https://blog.csdn.net/m0_63834988/category_12441299.htmlhttps://blog.csdn.net/m0_63834988/category_12441299.html

3、多子图和布局

1. subplot()函数

Matplotlib多子图和布局:subplot()函数_QomolangmaH的博客-CSDN博客https://blog.csdn.net/m0_63834988/article/details/132908035?spm=1001.2014.3001.5501

2. subplots()函数

Matplotlib多子图和布局:subplots()函数_QomolangmaH的博客-CSDN博客https://blog.csdn.net/m0_63834988/article/details/132908388?spm=1001.2014.3001.5502

3. 散点矩阵图(Scatter Matrix Plot)

用于可视化多个变量之间的关系,通过绘制多个散点图组合在一起形成一个矩阵

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

# 生成随机数据
np.random.seed(0)
data = np.random.rand(4, 100)  # 生成一个4行100列的随机数组

# 计算变量的数量
num_vars = data.shape[0]

# 创建一个具有适当形状的子图网格
fig, axes = plt.subplots(num_vars, num_vars, figsize=(8, 8))

# 遍历每对变量并绘制散点图
for i in range(num_vars):
    for j in range(num_vars):
        axes[i, j].scatter(data[i], data[j])
        axes[i, j].set_xlabel('x{}'.format(i+1))
        axes[i, j].set_ylabel('x{}'.format(j+1))

# 调整子图之间的间距
plt.tight_layout()

# 显示图形
plt.show()
  • 使用np.random.rand函数生成一个4行100列的随机数组作为随机数据。
  • 根据变量的数量创建了一个具有适当形状的子图网格。
  • 使用双重循环遍历每对变量,并在相应的子图中绘制散点图。scatter函数用于绘制散点图,set_xlabelset_ylabel函数用于设置坐标轴标签。
  • 使用plt.tight_layout()调整子图之间的间距,并使用plt.show()显示图形。
相关推荐
changwan4 分钟前
基于Celery+Supervisord的异步任务管理方案
后端·python·性能优化
君秋水4 分钟前
Python异步编程指南:asyncio从入门到精通(Python 3.10+)
后端·python
Gene_INNOCENT15 分钟前
大型语言模型训练的三个阶段:Pre-Train、Instruction Fine-tuning、RLHF (PPO / DPO / GRPO)
人工智能·深度学习·语言模型
挣扎与觉醒中的技术人17 分钟前
如何优化FFmpeg拉流性能及避坑指南
人工智能·深度学习·性能优化·ffmpeg·aigc·ai编程
君秋水17 分钟前
FastAPI教程:20个核心概念从入门到 happy使用
后端·python·程序员
watersink20 分钟前
Dify框架下的基于RAG流程的政务检索平台
人工智能·深度学习·机器学习
试着生存31 分钟前
java根据List<Object>中的某个属性排序(数据极少,顺序固定)
java·python·list
热心市民小汪36 分钟前
管理conda下python虚拟环境
开发语言·python·conda
程序员Linc39 分钟前
计算机视觉 vs 机器视觉 | 机器学习 vs 深度学习:核心差异与行业启示
深度学习·机器学习·计算机视觉·机器视觉
不去幼儿园39 分钟前
【启发式算法】Dijkstra算法详细介绍(Python)
人工智能·python·算法·机器学习·启发式算法·图搜索算法