首页 > 编程语言 >Python Matplotlib 多个坐标系下绘制多个图像

Python Matplotlib 多个坐标系下绘制多个图像

时间:2024-01-20 21:56:21浏览次数:32  
标签:axs plt 多个 Python 子图 Matplotlib 网格线 np 绘制

 

1、绘制图像

使用 plt.subplots()可以创建一个图形对象以及一个或多个子图(axes)对象。使得在同一个窗口中绘制多个图像变得非常简单和直观。使用 plt.subplots(),可以轻松地管理多个子图的布局,并且可以对每个子图进行独立的绘图和自定义设置。常用参数如下,

参数

说明

nrows

子图的行数。

ncols

子图的列数。

figsize

图形的物理尺寸(宽度,高度),

单位为英寸。

sharex

若设置为True,

则所有子图共享x轴。

也可以设置为'row'或'col',

表示行或列内子图共享x轴。

sharey

若设置为True,

则所有子图共享y轴。

也可以设置为'row'或'col',

表示行或列内子图共享y轴。

subplot_kw

传递给每个子图(axes)构造器的关键字参数字典。

gridspec_kw

传递给GridSpec构造器以调整子图布局的关键字参数字典。

tight_layout

是否自动调整子图参数,

以避免重叠。设置为

True 时,会自动调整布局。

使用示例:

import matplotlib.pyplot as plt
import numpy as np

# 设置子图的行数和列数
nrows, ncols = 2, 2

# 创建图形和子图对象,指定整体图形大小为10x10英寸
fig, axs = plt.subplots(nrows, ncols, figsize=(10, 10), 
                        tight_layout=True, gridspec_kw={'width_ratios': [3, 1], 'height_ratios': [1, 3]})

# 生成数据
x = np.linspace(0, 2 * np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)

# 在第一个子图上绘制正弦曲线
axs[0, 0].plot(x, y1, 'tab:blue')
axs[0, 0].set_title('Sine Function')

# 在第二个子图上绘制余弦曲线
axs[0, 1].plot(x, y2, 'tab:orange')
axs[0, 1].set_title('Cosine Function')

# 在第三个子图上绘制正弦曲线的负值
axs[1, 0].plot(x, -y1, 'tab:green')
axs[1, 0].set_title('Negative Sine Function')

# 在第四个子图上绘制余弦曲线的负值
axs[1, 1].plot(x, -y2, 'tab:red')
axs[1, 1].set_title('Negative Cosine Function')

# 自动调整子图间距
plt.tight_layout()

# 使用 plt.draw() 显示画布
plt.draw()

# 显示图形
plt.show()

2、添加网格线

使用 plt.grid() 函数用于向图表中添加网格线,可以显著提高图表的可读性和美观性。在一个图形中绘制多个坐标系(子图)时,可以在每个子图中单独使用 plt.grid() 来控制网格线的显示。常用参数如下,

参数名

说明

b

布尔值,用于开启或关闭网格。例如,True为显示网格,False为隐藏网格。

which

指定显示哪些网格线。可选值有'major'、'minor'、'both'。默认为'major'。

color

设置网格线的颜色。可以是任何Matplotlib识别的颜色格式。例如,'red'、'blue'、'#FF00FF'等。

linestyle

设置网格线的样式。常见样式包括'-'(实线)、'--'(虚线)、'-.'(点划线)等。

linewidth

设置网格线的宽度,为浮点数。

axis

确定网格线应用于哪个轴。可选值有'x'、'y'、'both'。默认为'both'。

使用示例:

import matplotlib.pyplot as plt
import numpy as np

# 创建数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)

# 创建子图
fig, ax = plt.subplots()

# 绘制两条曲线
ax.plot(x, y1, label='sin(x)')
ax.plot(x, y2, label='cos(x)')

# 添加网格
# 使用虚线样式,灰色,宽度为0.5
ax.grid(True, which='major', color='gray', linestyle='--', linewidth=0.5)

# 添加次要网格
# 使用点线样式,浅灰色,宽度为0.25
ax.minorticks_on()
ax.grid(True, which='minor', color='red', linestyle=':', linewidth=0.25)

# 添加图例
ax.legend()

# 使用 plt.draw() 显示画布
plt.draw()

# 显示图表
plt.show()

3、绘制多个图像

可以创建一个具有多个子图的图表。每个子图可以有自己的坐标系。绘制多个坐标系下的多个图像是一种常用的方法来展示和比较不同数据集或数据的不同方面。

使用示例:Python Matplotlib 多个坐标系下绘制多个图像-CJavaPy

标签:axs,plt,多个,Python,子图,Matplotlib,网格线,np,绘制
From: https://www.cnblogs.com/tinyblog/p/17977185

相关文章

  • 【办公自动化】Python执行Windows命令
    ##第一部分:引言在Python中,我们可以使用`os`模块来执行Windows命令。`os`模块提供了许多与操作系统交互的函数,包括执行系统命令。以下是一个简单的示例,展示了如何使用Python执行Windows命令。##第二部分:导入os模块首先,我们需要导入`os`模块。在Python脚本的开头添加以下代码:`......
  • 【办公自动化】Python执行Windows命令
    第一部分:引言在Python中,我们可以使用os模块来执行Windows命令。os模块提供了许多与操作系统交互的函数,包括执行系统命令。以下是一个简单的示例,展示了如何使用Python执行Windows命令。第二部分:导入os模块首先,我们需要导入os模块。在Python脚本的开头添加以下代码:importos第......
  • Python实战:selenium模拟浏览器运行,获取软科网站2023中国大学排名
    Python实战:selenium模拟浏览器运行,获取软科网站2023中国大学排名在爬取一些加密的网页时,可以使用selenium模拟浏览器运行,再从网页中提取想要的数据。使用的库本文使用到的Python库有:selenium、bs4、pandas使用selenium解决网页的反爬使用bs4对html网页进行解析和提取数据......
  • Ingress企业实战:部署多个Ingress控制器篇
    背景在大规模集群场景中,部分服务需要通过公网Ingress对外提供服务访问,但是有部分服务只对内提供服务,不允许使用公网访问,仅支持内部服务间调用,此时可以通过部署两套独立的Ingress来实现,一套支持公网访问,一套仅支持内网访问。接下来,我们通过最佳实践进行实现喽!架构图最佳实践说明......
  • python+flask_restful使用jwt
    正在做毕设,由于毕设需求使用python+flask,使用jwt目的是对请求进行保护,我的项目采用vue3+flask前后端分离实现,进入正题:使用jwt,首先下载扩展pipinstallFlask-JWT-Extended然后在项目中注册使用,我的项目结构是这样的 在exts.py中引入jwt扩展,fromflask_jwt_extendedimpo......
  • Python实现线性判别分析鸢尾花数据集或随机生成两个线性可分的数据集
    线性判别分析是一种经典的线性学习方法,在二分类问题上最早由Fisher在1936年提出,亦称Fisher线性判别。线性判别的思想非常朴素:给定训练样例集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能接近,异类样例的投影点尽可能远离;在对新样本进行分类时,将其投影到同样的直线上,再根据......
  • Python中的回调函数
    先来看一个程序:deff1():print(2)return1deff2(a):print(3)returnaprint(f2(f1()))这个程序,在调用时,f2会先等待f1调用完毕,返回1之后,再进行调用,所以会输出2、3、1,但是若这样改写程序deff1():print(2)return1deff2(f):prin......
  • 【Python】查找和删除表格中的重复行
    查找:importpandasaspddf=pd.read_excel("秘籍.xlsx")#打开list1=[]foriinrange(df.shape[0]):#总行数list1.append(list(df.values[i]))#将每行以列表的形式装入列表forxinlist1:iflist1.count(x)>1:#如果列表中元素出现次数>1prin......
  • IP关联会怎样?如何避免多个账号的IP关联?
    当你需要运行多个账号或者多个窗口任务时,你需要关注的一个问题是多个账号是否会被关联。而引起账号关联的其中一个原因是IP关联。IP关联是什么意思?IP关联即多个账号使用同一个IP地址。比如你有多个亚马逊、Facebook账号,即使换了不同的设备,但是网络环境没有变化,仍使用的同一条IP地址......
  • Python手相识别教程10命运线
    10命运线土星线是手相中信息量最大的线条之一。它记录了工作和生活方式的重大变化,描述了我们在人生不同阶段的安全感。这条线有很多名字:命运线、命运线,以及最贴切的安全线。命运线反映了货币安全,但这并不是土星线上显示的唯一一种安全。这条线的标记和特征可能是客观的,也可能......