当前位置: 首页 > article >正文

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

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.kler.cn/a/514832.html

相关文章:

  • vue3搭建实战项目笔记
  • 软件测试入门—用例设计中的场景图和状态迁移图
  • 2025年最新汽车零部件企业销售项目管理解决方案
  • flutter跨端UI框架简介
  • HTML语言的计算机基础
  • C语言之图像文件的属性
  • Unity Line Renderer Component入门
  • IP所属地与上网地点:如何匹配?
  • 2024大模型双向突破:MoE架构创新与小模型崛起
  • [Dialog屏幕开发] 屏幕绘制(文本/输入框/按钮控件)
  • 【组件分享】商品列表组件-最佳实践
  • 【子矩阵——优先队列】
  • Leecode刷题C语言之从栈中取出K个硬币的最大面积和
  • node.js 07.npm下包慢的问题与nrm的使用
  • Java 设计模式一
  • 聚类OTU vs 降噪识别生物序列——谁将主宰扩增子领域未来
  • CSDN 博客之星 2024:默语的技术进阶与社区耕耘之旅
  • Markdown Viewer 浏览器, vscode
  • 如何为64位LabVIEW配置正确的驱动程序
  • 基于STM32F103驱动AD7606串行采集数据信号
  • C++之初识模版
  • 安卓APP如何适配不同的手机分辨率
  • 【动态规划】--- 斐波那契数模型
  • 短剧系统开发功能需求/APP开发/源码指南
  • 计算在不规则形状内不同结构的占比
  • winfrom项目,引用EPPlus.dll实现将DataTable 中的数据保存到Excel文件