【深度学习】 Python 和 NumPy 系列教程(十四):Matplotlib详解:1、2d绘图(下):箱线图、热力图、面积图、等高线图、极坐标图

目录

一、前言

二、实验环境

三、Matplotlib详解

1、2d绘图类型

[0. 设置中文字体](#0. 设置中文字体)

[1-5. 折线图、散点图、柱状图、直方图、饼图](#1-5. 折线图、散点图、柱状图、直方图、饼图)

[6. 箱线图(Box Plot)](#6. 箱线图(Box Plot))

[7. 热力图(Heatmap)](#7. 热力图(Heatmap))

[8. 面积图(Area Plot)](#8. 面积图(Area Plot))

[9. 等高线图(Contour Plot)](#9. 等高线图(Contour Plot))

[10. 极坐标图(Polar Plot)](#10. 极坐标图(Polar 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绘图类型

0. 设置中文字体

python 复制代码
import matplotlib

matplotlib.rcParams['font.family'] = 'Microsoft YaHei'  # 设置为微软雅黑字体
matplotlib.rcParams['font.sans-serif'] = ['SimHei']     # 设置中文字体为黑体

若不进行该设置,会报错字体缺失

1-5. 折线图、散点图、柱状图、直方图、饼图

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

6. 箱线图(Box Plot)

用于显示数据的离散程度和异常值

python 复制代码
import matplotlib.pyplot as plt


data = [1, 1, 2, 3, 3, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9]

# 绘制箱线图
plt.boxplot(data)

# 添加标题和标签
plt.title("箱线图示例")
plt.ylabel("数值")

# 显示图形
plt.show()

7. 热力图(Heatmap)

用于显示数据的矩阵形式,颜色表示数值大小

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

data = np.random.rand(5, 5)

# 绘制热力图
plt.imshow(data, cmap='hot')

# 添加颜色条
plt.colorbar()

# 添加标题和标签
plt.title("热力图示例")
plt.xlabel("X轴")
plt.ylabel("Y轴")

# 显示图形
plt.show()

8. 面积图(Area Plot)

用于显示随时间或其他变量的变化趋势,通过填充颜色来表示不同区域的数值

python 复制代码
import matplotlib.pyplot as plt


x = [1, 2, 3, 4, 5]
y1 = [1, 3, 4, 2, 5]
y2 = [2, 4, 1, 3, 2]

# 绘制面积图
plt.fill_between(x, y1, alpha=0.5, label='区域1')
plt.fill_between(x, y2, alpha=0.5, label='区域2')

# 添加标题和标签
plt.title("面积图示例")
plt.xlabel("X轴")
plt.ylabel("Y轴")

# 添加图例
plt.legend()

# 显示图形
plt.show()

其中alpha=0.5表示填充颜色的透明度

9. 等高线图(Contour Plot)

用于显示二维数据的等高线图,其中不同高度的曲线表示不同数值

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

# 创建二维数组作为数据
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))

# 绘制等高线图
plt.contour(X, Y, Z)

# 添加标题和标签
plt.title("等高线图示例")
plt.xlabel("X轴")
plt.ylabel("Y轴")

# 显示图形
plt.show()
  • 创建了一个二维数组作为数据:通过使用np.linspace函数生成一系列均匀分布的数值,然后使用np.meshgrid函数将这些数值转换为网格状的坐标点。通过对坐标点进行某种运算,生成了对应的二维数据。
  • 使用plt.contour(X, Y, Z)绘制等高线图,其中XY表示坐标点的网格,Z表示对应位置的数据值。

10. 极坐标图(Polar Plot)

使用极坐标而不是直角坐标来显示数据,常用于显示周期性数据

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

# 创建角度数据和半径数据
theta = np.linspace(0, 2*np.pi, 100)
r = np.sin(3*theta)

# 绘制极坐标图
plt.polar(theta, r)

# 添加标题
plt.title("极坐标图示例")

# 显示图形
plt.show()
  • 创建角度数据和半径数据:通过使用np.linspace函数生成一系列均匀分布的角度值,并使用某种函数关系生成对应的半径值。
  • 使用plt.polar(theta, r)绘制极坐标图,其中theta表示角度值,r表示对应角度的半径值。
相关推荐
测开小菜鸟3 分钟前
使用python向钉钉群聊发送消息
java·python·钉钉
Power202466625 分钟前
NLP论文速读|LongReward:基于AI反馈来提升长上下文大语言模型
人工智能·深度学习·机器学习·自然语言处理·nlp
YRr YRr1 小时前
深度学习:循环神经网络(RNN)详解
人工智能·rnn·深度学习
sp_fyf_20241 小时前
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-11-01
人工智能·深度学习·神经网络·算法·机器学习·语言模型·数据挖掘
红客5971 小时前
Transformer和BERT的区别
深度学习·bert·transformer
多吃轻食1 小时前
大模型微调技术 --> 脉络
人工智能·深度学习·神经网络·自然语言处理·embedding
萧鼎1 小时前
Python并发编程库:Asyncio的异步编程实战
开发语言·数据库·python·异步
学地理的小胖砸1 小时前
【一些关于Python的信息和帮助】
开发语言·python
疯一样的码农1 小时前
Python 继承、多态、封装、抽象
开发语言·python
charles_vaez2 小时前
开源模型应用落地-glm模型小试-glm-4-9b-chat-快速体验(一)
深度学习·语言模型·自然语言处理