matplotlib 双y轴绘制及合并图例的实现代码

下面是详细的讲解“matplotlib 双y轴绘制及合并图例的实现代码”的完整攻略:

1. 背景介绍

在数据可视化领域,经常有需要同时展示两个不同单位、数值范围及趋势的数据。这时,我们就需要使用matplotlib库来画双y轴图,让两个y轴分别对应不同刻度,展示数据的变化趋势。

同时,当我们需要在同一个图中绘制多条曲线时,为了便于观察数据趋势,我们需要将多个图例合并在一起,方便对比和分析。

这时,matplotlib库中的twinx()函数和legend()函数就可以满足我们的需求。

2. 双y轴绘制实现

import matplotlib.pyplot as plt

# 准备数据
x = [1, 2, 3, 4, 5]
y1 = [2, 4, 6, 8, 10]
y2 = [20, 16, 12, 8, 4]

# 创建画布和坐标轴对象
fig, ax1 = plt.subplots()

# 创建第二个坐标轴对象
ax2 = ax1.twinx()

# 绘制y1对应的线条
ax1.plot(x, y1, color='r', marker='o', label='y1')

# 绘制y2对应的线条
ax2.plot(x, y2, color='g', marker='o', label='y2')

# 设置标题和坐标轴标签内容
ax1.set_title("Double y-axis plot example")
ax1.set_xlabel("X-axis")
ax1.set_ylabel("Y1-axis")
ax2.set_ylabel("Y2-axis")

# 显示图例
ax1.legend(loc='upper left')
ax2.legend(loc='upper right')

# 显示图像
plt.show()

代码解释:

  • 准备数据:定义两个序列x和对应的y1、y2数据
  • 创建画布和坐标轴对象:使用subplot()函数创建一个画布和一个主坐标轴对象ax1
  • 创建第二个坐标轴对象:使用twinx()函数创建一个副坐标轴对象ax2
  • 分别绘制y1和y2对应的线条:使用plot()函数,指定x、y、颜色和线型等参数绘制线条
  • 设置标题和坐标轴标签内容:使用set_title()、set_xlabel()、set_ylabel()函数设置标题、x和y轴标签
  • 显示图例:使用legend()函数显示图例,分别给主坐标轴和副坐标轴对象指定位置
  • 显示图像:使用show()函数显示图像。

3. 合并图例实现

import matplotlib.pyplot as plt

# 准备数据
x = [1, 2, 3, 4, 5]
y1 = [2, 4, 6, 8, 10]
y2 = [20, 16, 12, 8, 4]

# 创建画布和坐标轴对象
fig, ax = plt.subplots()

# 绘制y1对应的线条
ax.plot(x, y1, color='r', marker='o', label='y1')
# 绘制y2对应的线条
ax.plot(x, y2, color='g', marker='o', label='y2')

# 绘制第三条线,用于合并图例
ax.plot([], [], linestyle='none', label='')

# 设置图例位置和标题内容
ax.legend(loc='upper left', title='Legend Title')

# 显示图像
plt.show()

代码解释:

  • 准备数据:定义两个序列x和对应的y1、y2数据
  • 创建画布和坐标轴对象:使用subplot()函数创建一个画布和一个主坐标轴对象ax
  • 绘制y1和y2对应的线条:使用plot()函数,指定x、y、颜色和线型等参数绘制线条,每个线条设置一个label属性,用于图例标签
  • 绘制第三条线,用于合并图例:使用plot()函数,不指定x、y参数,设定linestyle为'none',label属性为空字符串,产生一个透明的线条,将y1和y2的图例合并在一起
  • 设置图例位置和标题内容:使用legend()函数显示图例,通过loc和title属性设置图例位置和标题内容
  • 显示图像:使用show()函数显示图像。

4. 示例说明

下面两个示例旨在说明双y轴绘制和合并图例的不同场景应用。

示例1:温湿度双y轴绘制

import matplotlib.pyplot as plt

# 准备数据
x = [1, 2, 3, 4, 5]
temp = [23, 25, 27, 28, 26]
humidity = [60, 50, 40, 35, 45]

# 创建画布和主坐标轴对象
fig, ax1 = plt.subplots()

# 创建副坐标轴对象,并共享主坐标轴对象
ax2 = ax1.twinx()

# 绘制温度对应的线条,使用红色实心圆点表示
ax1.plot(x, temp, color='r', marker='o', label='Temperature')

# 绘制湿度对应的线条,使用绿色实心三角形表示
ax2.plot(x, humidity, color='g', marker='^', label='Humidity')

# 设置标题和坐标轴标签内容
ax1.set_title("Temperature and Humidity")
ax1.set_xlabel("Time")
ax1.set_ylabel("Temperature (C)")
ax2.set_ylabel("Humidity (%)")

# 显示图例
ax1.legend(loc='upper left')
ax2.legend(loc='upper right')

# 显示图像
plt.show()

示例1展示了温湿度在同一张图上、分别对应不同y轴进行绘制,使用不同颜色、不同形状的标记点标识。

示例2:三线条合并图例

import matplotlib.pyplot as plt

# 准备数据
x = [1, 2, 3, 4, 5]
y1 = [2, 4, 6, 8, 10]
y2 = [20, 16, 12, 8, 4]
y3 = [5, 10, 15, 20, 25]

# 创建画布和坐标轴对象
fig, ax = plt.subplots()

# 绘制y1、y2、y3对应的线条
ax.plot(x, y1, color='r', marker='o', label='Line 1')
ax.plot(x, y2, color='g', marker='s', label='Line 2')
ax.plot(x, y3, color='b', marker='*', label='Line 3')

# 绘制第四条线,用于合并图例
ax.plot([], [], linestyle='none', label='')

# 设置图例位置和标题内容
ax.legend(loc='upper left', title='Legend Title')

# 显示图像
plt.show()

示例2展示了三个线条在同一张图上展示,通过绘制一个空的line,将三个图例合并在了一起,并设置了图例标题。

5. 总结

本文详细讲解了matplotlib库中双y轴绘制及合并图例的实现代码,并给出了两个示例分别展示了双y轴绘制和合并图例的不同应用场景。通过实践和不断尝试,可以更加深入的掌握这两个函数的使用方法,绘制出更加美观、易于理解的数据可视化图表。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:matplotlib 双y轴绘制及合并图例的实现代码 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • Python基础学习之反射机制详解

    Python基础学习之反射机制详解 1. 反射机制的概念 在Python中,反射机制指的是在运行时(runtime)动态地访问、检查、修改程序对象的能力。具体来说,可以通过字符串形式的对象名来访问对象的属性、方法,或者通过属性名、方法名来访问属性、方法。 2. 反射机制的应用 2.1 动态导入模块 Python中的import语句可以在程序运行时动态地导入模…

    python 2023年6月3日
    00
  • python聚类算法选择方法实例

    Python聚类算法选择方法实例 聚类是一种无监督学习方法,它将相似的数据点分组到一起。在本攻略中,我们将介绍如何选择适合的聚类算法来处理不同类型的数据。 步骤1:了解聚类算法 在选择聚类算法之前,我们需要了解不同类型的聚类算法。在本攻略中,我们将介绍两种常见的聚类算法:K均值聚类和层次聚类。 K均值聚类 K均值聚类是一种基于距的聚类算法,它将数据点分成K个…

    python 2023年5月14日
    00
  • 零基础使用Python读写处理Excel表格的方法

    下面将详细讲解“零基础使用Python读写处理Excel表格的方法”的完整实例教程。 简介 Excel是办公中经常使用的电子表格软件,Python是一种强大的编程语言,本教程将介绍如何使用Python读写处理Excel表格数据。在本教程中我们将会使用到以下库: xlrd:用于读取Excel文件; xlwt:用于写入Excel文件; openpyxl:另一种用…

    python 2023年5月13日
    00
  • 详解Python如何实现尾递归优化

    详解Python如何实现尾递归优化 尾递归是一种特殊的递归形式,它在递归调用时不会产生新的栈帧,从而避免了栈溢出的问题。Python并没有对尾递归进行优化,但我们可以通过一些技巧来实现递归优化。本文将详细介绍Python如何实现尾递归优化,并提供两个示例来说明它的用法。 什么是尾递归 在介绍如何实现尾递归优化之前,我们先来了解一下什么是尾递归。 递归是指递归…

    python 2023年5月14日
    00
  • 详解Python自建logging模块

    详解Python自建logging模块 在Python中,logging模块是一个非常常用的模块,它可以帮助我们记录程序运行时的信息,包括错误、警告、调试信息等。本文将详细介绍如何使用Python自建logging模块,包括如何配置logging模块、如何记录日志信息、如何输出日志信息等。 配置logging模块 在使用logging模块之前,我们先配置lo…

    python 2023年5月14日
    00
  • selenium3+python3环境搭建教程图解

    本文将详细讲解如何搭建selenium3+python3环境,并结合两个示例进行说明。 环境要求 在开始搭建之前,请确保您已经安装以下环境: Python3(建议使用3.6以上版本) pip3(Python包管理器) Chrome浏览器(建议使用最新版本) Chrome Driver(用于控制Chrome浏览器,需要和Chrome浏览器版本对应) 安装sel…

    python 2023年5月19日
    00
  • Python中赋值的含义及说明

    Python中赋值操作是给变量赋予某个值的过程。在Python中,使用等号(=)符号来进行赋值操作。 例如,以下代码将数字10赋值给变量x: x = 10 这行代码的含义是将数字10赋值给变量x。在这个例子中,等号(=)符号表示赋值操作,即将等号右侧的值赋给等号左侧的变量。 赋值操作可以用于创建新的变量,也可以用于修改现有变量的值。例如: x = 10 x …

    python 2023年5月14日
    00
  • python 把数据 json格式输出的实例代码

    以下是详细的攻略。 1. 什么是JSON? JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它以易于让人阅读的文本格式为基础,用于数据的交换和存储,常用于Web应用程序间的数据传输。 JSON是一种文本格式,可以通过 Python 的 json 模块进行解析和序列化。 2. JSON 和 Python 的数据类型对…

    python 2023年6月3日
    00
合作推广
合作推广
分享本页
返回顶部