如何在Matplotlib中绘制多个Y轴刻度

news2025/1/23 13:02:42

Matplotlib是一个功能强大的Python库,在它的帮助下,我们可以绘制条形图,图表,绘图,比例等。在本文中,我们将尝试在Matplotlib中绘制多个Y轴刻度。

为什么多个Y轴刻度很重要?

绘制具有不同单位或测量尺度的数据集时,需要多个Y轴尺度,以帮助进行清晰的比较而不会失真。在以下情况下,这是必要的:

  1. 不同的单位或测量尺度:
    如果您有多个具有不同单位或测量尺度的数据集,则使用单独的Y轴可以防止失真,并更容易比较趋势。
  2. 相关但按比例缩放的数据:
    当您拥有相关但幅度不同的数据集时,多个Y轴可以帮助可视化其模式,而无需一个数据集主导图。
  3. 合并不同数据:
    如果您需要覆盖两个或多个具有不同数据类型的数据集(例如,温度和降雨量),多个Y轴允许您用自己的尺度表示每个变量。
  4. 突出关系:
    多个Y轴可用于突出显示可能具有不同范围或单位的两个数据集之间的关系或相关性。
  5. 避免杂乱:
    当您有许多数据集要显示时,使用多个Y轴可以防止混乱,并使图更具可读性。
  6. 增强解释:
    在某些情况下,具有多个Y轴可以通过在不同数据集之间提供清晰的视觉分离来增强图的可解释性。

示例基本步骤

导入必要库:

import matplotlib.pyplot as plt
import numpy as np

创建示例数据:

x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.exp(-x)
y3 = 100 * np.cos(x)

我们将创建第一个Y轴。要创建轴,我们使用Matplotlib。

1.创建第一个Y轴

fig, ax1 = plt.subplots()

在这里插入图片描述
在这里,我们创建了一个matplotlib图形和轴“ax1”来表示第一个y轴。plt.subplots(基本上用于创建单个子图和图形。

2.在第一个Y轴上绘制第一个数据集

现在我们的下一步是在第一个Y轴上绘制第一个数据集。这里,我们绘制了我们定义的第一个数据集“y1”,并在ax1.plot()的帮助下绘制了第一个Y轴“ax1”。这里我们使用“b”作为颜色,因为我们希望它是蓝色的,然后我们设置X和Y轴的标签。我们还使用了tick_params()将Y轴的颜色设置为蓝色。

# Create the first plot with the left Y-axis
fig, ax1 = plt.subplots(figsize=(8, 6))
# Plot the first dataset on the first Y-axis
ax1.plot(x, y1, 'b', label='y1 (sin(x))') # Shorthand 'b' for blue color

# Set labels and ticks for the first Y-axis
ax1.set_xlabel('X-axis')
ax1.set_ylabel('y1', color='b')
ax1.tick_params('y', colors='b')

# Display the plot
plt.title('Plotting the First Dataset on the First Y-Axis')
plt.show()

在这里插入图片描述
3.创建第二个Y轴

ax2 = ax1.twinx()

在这里,我们使用ax1.twinx()方法创建第二个轴“ax2”,它将与第一个Y轴共享相同的X轴。

4.在第二个Y轴上绘制第二个数据集

我们在上面创建的第二个y轴上绘制第二个数据集。现在我们使用“g”,因为我们想将颜色设置为绿色。然后设置y轴的标签。通过使用tick_params我们可以将Y轴的颜色设置为绿色。现在我们将第二组数据绘制在第二个Y轴上。

fig, ax2 = plt.subplots(figsize=(8, 6))
ax2.plot(x, y2, 'g', label='y2 (exp(-x))')
ax2.set_ylabel('y2', color='g')
ax2.tick_params('y', colors='g')
# Display the plot
plt.title('Plotting the Second Dataset on the Second Y-Axis')
plt.show()

在这里插入图片描述
5.创建第三个Y轴

ax3 = ax1.twinx()

6.在第三个Y轴上绘制第三个数据集

fig, ax3 = plt.subplots(figsize=(8, 6))
ax3.plot(x, y3, 'r', label='y3 (100*cos(x))')
ax3.set_ylabel('y3', color='r')
ax3.tick_params('y', colors='r')
# Display the plot
plt.title('Plotting the third Dataset on the third Y-Axis')
plt.show()

在这里插入图片描述
7.添加图例

lines1, labels1 = ax1.get_legend_handles_labels()
lines2, labels2 = ax2.get_legend_handles_labels()
lines3, labels3 = ax3.get_legend_handles_labels()
lines = lines1 + lines2 + lines3
labels = labels1 + labels2 + labels3

8.添加标题并展示

plt.title('Multiple Y-axis Scales')
plt.show()

在这里插入图片描述

在这张图中,我们可以清楚地看到三个y轴和x轴。

结论

我们已经讨论了如何在这个项目中导入所需的库,即matplotlib和numpy,然后我们为多个数据集创建了示例数据,然后我们讨论了第一个y轴,第二个y轴,第三个y轴,在这之间我们利用twinx()函数来创建共享同一个x轴的y轴。然后在添加图例后,完成了绘制。希望这对在Matplotlib中创建多个Y轴刻度有帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2280911.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大模型GUI系列论文阅读 DAY1:《基于大型语言模型的图形用户界面智能体:综述》(6.6W 字长文)

摘要 图形用户界面(Graphical User Interfaces, GUIs)长期以来一直是人机交互的核心,为用户提供了直观且以视觉为驱动的方式来访问和操作数字系统。传统上,GUI交互的自动化依赖于基于脚本或规则的方法,这些方法在固定…

RabbitMQ1-消息队列

目录 MQ的相关概念 什么是MQ 为什么要用MQ MQ的分类 MQ的选择 RabbitMQ RabbitMQ的概念 四大核心概念 RabbitMQ的核心部分 各个名词介绍 MQ的相关概念 什么是MQ MQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出&am…

linux 下tensorrt的yolov8的前向推理(python 版本)的实现

一、yolov8的python实现的环境搭建 #通过pip安装 pip install ultralytics #通过git克隆GitHub仓库 git clone <https://github.com/ultralytics/ultralytics.git> cd ultralytics #安装依赖 pip install -r requirements.txt #执行推理 yolo predict model./yolov8n.pt …

java文件按行写入数据后并创建行索引及查询

背景 当有很多数据需要存储&#xff0c;这些数据只是想要简单的按行存储和查询&#xff0c;不需要进行其他条件搜索&#xff0c;此时就可以考虑不需把这些数据存储在数据库&#xff0c;而是直接写入文件&#xff0c;然后从文件中查询 但是正常情况下&#xff0c;如果仅仅只是按…

SpringBoot集成Flink-CDC,实现对数据库数据的监听

一、什么是 CDC &#xff1f; CDC 是Change Data Capture&#xff08;变更数据获取&#xff09;的简称。 核心思想是&#xff0c;监测并捕获数据库的变动&#xff08;包括数据或数据表的插入、 更新以及删除等&#xff09;&#xff0c;将这些变更按发生的顺序完整记录下来&…

VisualStudio中配置OpenGL环境并制作模板

VisualStudio中配置OpenGL环境并制作模板 本教程来自&#xff1a;sumantaguha Install Visual Studio Download Microsoft Visual Studio Community 2019 from https://my. visualstudio.com/Downloads?qvisual%20studio%202019&wt.mc_ idomsftvscom~older-downloads and…

工程上LabVIEW常用的控制算法有哪些

在工程应用中&#xff0c;LabVIEW常用的控制算法有很多&#xff0c;它们广泛应用于自动化、过程控制、机器人、测试测量等领域。以下是一些常见的控制算法&#xff1a; 1. PID 控制 用途&#xff1a;PID&#xff08;比例-积分-微分&#xff09;控制是最常用的反馈控制算法&…

WPF1-从最简单的xaml开始

1. 最简单的WPF应用 1.1. App.config1.2. App.xaml 和 App.xaml.cs1.3. MainWindow.xaml 和 MainWindow.xaml.cs 2. 正式开始分析 2.1. 声明即定义2.2. 命名空间 2.2.1. xaml的Property和Attribute2.2.2. xaml中命名空间2.2.3. partial关键字 学习WPF&#xff0c;肯定要先学…

对话小羊驼vicuna

文章目录 1. gpu租用2. 公网网盘存储实例/数据3. 登录实例4. 预训练模型下载5. llama、alpaca、vicuna的前世今生6. 对话Vicuna&#xff08;1&#xff09;llama-2-7b-hf&#xff08;2&#xff09;vicuna-7b-delta-v0&#xff08;3&#xff09;vicuna-7b-v0&#xff08;4&#x…

web路径问题和会话技术(Cookie和Session)

一.Base 1.base介绍①base是HTMl语言的基准网址标签,是一个单标签,位于网页头部文件的head标签内②一个页面最多使用一个base元素,用来提供一个指定的默认目标,是一种表达路径和连接网址的标记③常见的url路径分别有相对路径和绝对路径,如果base标签指定了目标,浏览器将通过这个…

C++17 新特性解析:Lambda 捕获 this

C17 引入了许多改进和新特性&#xff0c;其中之一是对 lambda 表达式的增强。在这篇文章中&#xff0c;我们将深入探讨 lambda 表达式中的一个特别有用的新特性&#xff1a;通过 *this 捕获当前对象的副本。这个特性不仅提高了代码的安全性&#xff0c;还极大地简化了某些场景下…

2025.1.20——二、buuctf BUU UPLOAD COURSE 1 1 文件上传

题目来源&#xff1a;buuctf BUU UPLOAD COURSE 1 1 一、打开靶机&#xff0c;查看信息 这里提示到了文件会被上传到./uploads&#xff0c;有路径&#xff0c;题目也说了upload&#xff0c;所以是文件上传漏洞。好简洁的题目&#xff0c;做过十七关upload-labs的我&#xff0c…

python学opencv|读取图像(四十二)使用cv2.add()函数实现多图像叠加

【1】引言 前序学习过程中&#xff0c;掌握了灰度图像和彩色图像的掩模操作&#xff1a; python学opencv|读取图像&#xff08;九&#xff09;用numpy创建黑白相间灰度图_numpy生成全黑图片-CSDN博客 python学opencv|读取图像&#xff08;四十&#xff09;掩模&#xff1a;三…

springBoot 整合ModBus TCP

ModBus是什么&#xff1a; ModBus是一种串行通信协议&#xff0c;主要用于从仪器和控制设备传输信号到主控制器或数据采集系统&#xff0c;例如用于测量温度和湿度并将结果传输到计算机的系统。&#xff08;百度答案&#xff09; ModBus 有些什么东西&#xff1a; ModBus其分…

数据结构——实验二·栈

海~~欢迎来到Tubishu的博客&#x1f338;如果你也是一名在校大学生&#xff0c;正在寻找各种变成资源&#xff0c;那么你就来对地方啦&#x1f31f; Tubishu是一名计算机本科生&#xff0c;会不定期整理和分享学习中的优质资源&#xff0c;希望能为你的编程之路添砖加瓦⭐&…

【IEEE Fellow 主讲报告| EI检索稳定】第五届机器学习与智能系统工程国际学术会议(MLISE 2025)

重要信息 会议时间地点&#xff1a;2025年6月13-15日 中国深圳 会议官网&#xff1a;http://mlise.org EI Compendex/Scopus稳定检索 会议简介 第五届机器学习与智能系统工程国际学术会议将于6月13-15日在中国深圳隆重召开。本次会议旨在搭建一个顶尖的学术交流平台&#xf…

一文详解Filter类源码和应用

背景 在日常开发中&#xff0c;经常会有需要统一对请求做一些处理&#xff0c;常见的比如记录日志、权限安全控制、响应处理等。此时&#xff0c;ServletApi中的Filter类&#xff0c;就可以很方便的实现上述效果。 Filter类 是一个接口&#xff0c;属于 Java Servlet API 的一部…

开发环境搭建-1:配置 WSL (类 centos 的 oracle linux 官方镜像)

一些 Linux 基本概念 个人理解&#xff0c;并且为了便于理解&#xff0c;可能会存在一些问题&#xff0c;如果有根本上的错误希望大家及时指出 发行版 WSL 的系统是基于特定发行版的特定版本的 Linux 发行版 有固定组织维护的、开箱就能用的 Linux 发行版由固定的团队、社区…

llama-2-7b权重文件转hf格式及模型使用

目录 1. obtain llama weights 2. convert llama weights files into hf format 3. use llama2 to generate text 1. obtain llama weights &#xff08;1&#xff09;登录huggingface官网&#xff0c;搜索llama-2-7b &#xff08;2&#xff09;填写申请表单&#xff0c;VP…

ElasticSearch(十一)— Elasticsearch中的SQL语句

一、总概 Elasticsearch 在 Basic 授权中支持以 SQL 语句的形式检索文档&#xff0c;SQL 语句在执行时会被翻译为 DSL 执行。从语法的角度来看&#xff0c;Elastisearch 中的 SQL 语句与RDBMS 中的 SQL 语句基本一致&#xff0c; 所以对于有数据库编程基础的人来说大大降低了使…