python之plot()和subplot()画图

Python 之 plot()subplot() 画图

在数据可视化中,matplotlib 是 Python 中最常用的绘图库之一。它为我们提供了灵活的工具来创建各类图形,包括折线图、柱状图、散点图、饼图等。而 plot()subplot()matplotlib 中最常用的两个函数,它们分别用于绘制图形和设置多个子图。

本文将详细讲解 plot()subplot() 函数的基本使用方法,并通过示例来帮助你更好地理解和应用这些功能。


一、plot() 函数基础

plot()matplotlib 中用于绘制图形的基础函数,通常用于绘制折线图。通过 plot(),你可以控制线条的颜色、样式、宽度、标记等。

1. plot() 的基本用法

最简单的 plot() 用法是传入数据序列,matplotlib 会自动生成折线图。

示例:简单的折线图

import matplotlib.pyplot as plt

# 定义数据
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]

# 使用 plot() 绘制折线图
plt.plot(x, y)

# 显示图形
plt.show()

说明:

  • xy 分别表示横坐标和纵坐标的数值。
  • plt.plot(x, y) 用于绘制折线图。
  • plt.show() 用于显示图形。

2. 自定义线条样式

你可以通过 plot() 函数的参数自定义线条的颜色、样式和标记。

示例:自定义线条样式

import matplotlib.pyplot as plt

# 定义数据
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]

# 绘制带有不同样式的线条
plt.plot(x, y, color='red', linestyle='--', marker='o')

# 显示图形
plt.show()

说明:

  • color='red' 设置线条颜色为红色。
  • linestyle='--' 设置线条为虚线。
  • marker='o' 在每个数据点上添加圆形标记。

3. 绘制多个折线图

你可以在同一张图上绘制多条折线,只需多次调用 plot() 函数。

示例:绘制多个折线图

import matplotlib.pyplot as plt

# 定义数据
x = [1, 2, 3, 4, 5]
y1 = [1, 4, 9, 16, 25]
y2 = [1, 2, 3, 4, 5]

# 绘制两条折线
plt.plot(x, y1, label='y = x^2', color='blue')
plt.plot(x, y2, label='y = x', color='green')

# 添加图例
plt.legend()

# 显示图形
plt.show()

说明:

  • label 参数用于为每条折线添加标签。
  • plt.legend() 用于显示图例,帮助区分不同的线条。

二、subplot() 函数基础

subplot() 函数用于在同一画布上创建多个子图。通过 subplot(),你可以指定图形的行列位置,轻松实现多个图形的排列和显示。

1. subplot() 的基本用法

subplot() 接受三个参数:nrowsncolsindex,分别表示子图的行数、列数和当前图的位置。

示例:创建一个包含 2 行 2 列子图的画布

import matplotlib.pyplot as plt

# 第一个子图
plt.subplot(2, 2, 1)  # 2 行 2 列的第 1 个子图
plt.plot([1, 2, 3], [1, 4, 9])

# 第二个子图
plt.subplot(2, 2, 2)  # 2 行 2 列的第 2 个子图
plt.plot([1, 2, 3], [1, 2, 3])

# 第三个子图
plt.subplot(2, 2, 3)  # 2 行 2 列的第 3 个子图
plt.plot([1, 2, 3], [3, 2, 1])

# 第四个子图
plt.subplot(2, 2, 4)  # 2 行 2 列的第 4 个子图
plt.plot([1, 2, 3], [1, 2, 1])

# 显示图形
plt.show()

说明:

  • subplot(2, 2, 1) 创建一个 2x2 的子图布局,并在第 1 个位置绘制图形。
  • subplot() 的参数依次是行数、列数和图形位置。图形位置是从左到右、从上到下进行编号的。

2. 调整子图之间的间距

可以通过 plt.subplots_adjust() 方法来调整子图之间的间距,例如设置左右、上下的间距。

示例:调整子图间距

import matplotlib.pyplot as plt

# 创建多个子图
plt.subplot(2, 2, 1)
plt.plot([1, 2, 3], [1, 4, 9])
plt.subplot(2, 2, 2)
plt.plot([1, 2, 3], [1, 2, 3])
plt.subplot(2, 2, 3)
plt.plot([1, 2, 3], [3, 2, 1])
plt.subplot(2, 2, 4)
plt.plot([1, 2, 3], [1, 2, 1])

# 调整子图间距
plt.subplots_adjust(hspace=0.5, wspace=0.5)  # hspace: 上下间距, wspace: 左右间距

# 显示图形
plt.show()

说明:

  • hspace 用于设置子图之间的垂直间距。
  • wspace 用于设置子图之间的水平间距。

3. 创建多个子图并共享坐标轴

你还可以在多个子图中共享坐标轴,例如,多个子图共用 x 轴或 y 轴。

示例:共享 x 轴

import matplotlib.pyplot as plt

# 创建多个子图,共享 x 轴
fig, axs = plt.subplots(2, 1, sharex=True)

# 绘制第一个子图
axs[0].plot([1, 2, 3], [1, 4, 9])

# 绘制第二个子图
axs[1].plot([1, 2, 3], [1, 2, 1])

# 显示图形
plt.show()

说明:

  • plt.subplots() 可以返回一个包含多个子图的 figaxs 对象。
  • sharex=True 表示所有子图共享 x 轴,sharey=True 表示共享 y 轴。

三、结合 plot()subplot() 创建复杂图形

你可以将 plot()subplot() 结合使用,在同一个画布上绘制多个折线图,并调整它们的布局和样式。

示例:多个子图和不同样式的折线图

import matplotlib.pyplot as plt

# 创建一个 2x2 的子图布局
plt.subplot(2, 2, 1)
plt.plot([1, 2, 3], [1, 4, 9], color='red', linestyle='-', marker='o', label='Line 1')
plt.legend()

plt.subplot(2, 2, 2)
plt.plot([1, 2, 3], [1, 2, 3], color='green', linestyle='--', marker='x', label='Line 2')
plt.legend()

plt.subplot(2, 2, 3)
plt.plot([1, 2, 3], [3, 2, 1], color='blue', linestyle='-.', marker='^', label='Line 3')
plt.legend()

plt.subplot(2, 2, 4)
plt.plot([1, 2, 3], [1, 2, 1], color='purple', linestyle=':', marker='s', label='Line 4')
plt.legend()

# 调整子图间距
plt.subplots_adjust(hspace=0.5, wspace=0.5)

# 显示图形
plt.show()

说明

  • 在每个子图中,我们都用不同的颜色、线型和标记绘制了折线图。
  • 使用 plt.legend() 为每个图形添加图例。

四、总结

  • plot() 用于绘制单一图形(如折线图),可以自定义线条的颜色、样式、标记等。
  • subplot() 用于在同一画布上创建多个子图,可以控制子图的排列和布局。
  • 通过 subplot()plot() 的组合,可以创建更加复杂的图形和数据可视化效果。

掌握了这些基本操作后,你可以利用 matplotlib 创建更复杂、更加美观的图形,进行数据可视化和分析。希望本文的讲解能帮助你更好地理解 plot()subplot() 的用法。

评论已关闭

推荐阅读

DDPG 模型解析,附Pytorch完整代码
2024年11月24日
DQN 模型解析,附Pytorch完整代码
2024年11月24日
AIGC实战——Transformer模型
2024年12月01日
Socket TCP 和 UDP 编程基础(Python)
2024年11月30日
python , tcp , udp
如何使用 ChatGPT 进行学术润色?你需要这些指令
2024年12月01日
AI
最新 Python 调用 OpenAi 详细教程实现问答、图像合成、图像理解、语音合成、语音识别(详细教程)
2024年11月24日
ChatGPT 和 DALL·E 2 配合生成故事绘本
2024年12月01日
omegaconf,一个超强的 Python 库!
2024年11月24日
【视觉AIGC识别】误差特征、人脸伪造检测、其他类型假图检测
2024年12月01日
[超级详细]如何在深度学习训练模型过程中使用 GPU 加速
2024年11月29日
Python 物理引擎pymunk最完整教程
2024年11月27日
MediaPipe 人体姿态与手指关键点检测教程
2024年11月27日
深入了解 Taipy:Python 打造 Web 应用的全面教程
2024年11月26日
基于Transformer的时间序列预测模型
2024年11月25日
Python在金融大数据分析中的AI应用(股价分析、量化交易)实战
2024年11月25日
AIGC Gradio系列学习教程之Components
2024年12月01日
Python3 `asyncio` — 异步 I/O,事件循环和并发工具
2024年11月30日
llama-factory SFT系列教程:大模型在自定义数据集 LoRA 训练与部署
2024年12月01日
Python 多线程和多进程用法
2024年11月24日
Python socket详解,全网最全教程
2024年11月27日