Matplotlib学习之subplots函数

Matplotlib学习之subplots函数Matplotlib学习笔记_matplotlibsubplots

1. subplots包装器参数说明:

subplots(nrows=1, ncols=1, sharex=False,sharey=False, squeeze=True, subplot_kw=None, gridspec_kw=None, ** fig_kw)

  • nrows,ncols参数:整数类型,可选项,默认均为1.分别设置坐标轴的排列网格;

  • sharex,sharey参数:布尔类型或是{“none”,“all”,“row”,“col”}字典类型,默认为False,用来指定各子图之间是否共用xy轴属性;

  • True or “all”:将在所有图像之间共享xy轴属性
  • False or “none”:每个图像x,y轴属性都是独立的
  • “row”:进行横向属性共享
  • “col “:进行列向属性共享
  • squeeze:布尔类型,默认为True;

True:

  • 如果只创建了一个子图像,返回的坐标系对象是一个标量
  • 如果创建的是1xN单行或者MX1单列的子图像,返回坐标系对象是一个一维numpy数组
  • 如果创建的是 NXM(N>1,M>1) 多行多列的子图像,返回坐标系对象是一个2维数组

False:

  • 没有进行降维压缩,无论图像如何排列返回的坐标系对象总是2维数组的。
  • num:整数类型或者字符串类型,默认:None。设置图像的序号或者标签

  • subplot_kw:字典,可选项。字典里的关键字被传递给add_subplot函数去调用图像类型

  • gridspec_kw:字典,可选项。将关键字传递给Gridspec构造函数,该构造函数用于放置子图的网络。

  • ** fig_kw:所有关键字参数都传递给pyplot.figure函数去调用

返回结果:

  • fig:画布对象
  • ax:坐标系子图对象或者轴对象的数组

2. 例子

导入模块

# 导入模块 import matplotlib.pyplot as plt import numpy as np 
2.1 nrows,ncols参数应用:

设置坐标轴的排列网格

生成2行2列个子图像

# 生成2行2列个子图像 fig, axs = plt.subplots(nrows=2, ncols=2) # fig, axs = plt.subplots(2, 2) 

在这里插入图片描述
对多个坐标轴使用元组解包

# 对多个坐标轴使用元组解包 # fig, (ax1, ax2) = plt.subplot(1, 2)--错误的 f, (ax1, ax2) = plt.subplots(1, 2) 

在这里插入图片描述

#fig, ((ax1, ax2), (ax3, ax4)) = plt.subplot(2, 2) -- 错误的 fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, sharex="col") 

在这里插入图片描述

2.2 sharex,sharey参数应用:

指定各子图之间是否共用xy轴属性

同行子图共用了Y轴属性,同列子图共用了X轴属性

# 同行子图共用了Y轴属性,同列子图共用了X轴属性 fig, axs = plt.subplots(2,2,sharex=True,sharey=True) 

在这里插入图片描述

fig, axs = plt.subplots(1,2,sharey="row") 

在这里插入图片描述

fig, axs = plt.subplots(2,1,sharex="col") 

在这里插入图片描述

2.3 squeeze参数说明:

True:

  • 如果只创建了一个子图像,返回的坐标轴对象是一个标量
  • 如果创建的是1xN单行或者MX1单列的子图像,返回坐标系对象是一个一维numpy数组
  • 如果创建的是 NXM(N>1,M>1) 多行多列的子图像,返回坐标系对象是一个2维数组

False:

  • 没有进行降维压缩,无论图像如何排列返回的坐标系对象总是2维数组的。
2.3.1 指定为True时

一个子图时,ax是个标量,可以直接引用

# 一个子图时,ax是个标量,可以直接引用 fig, ax = plt.subplots(squeeze=True) ax.plot(np.arange(5)) 

在这里插入图片描述
一行或一列个数组时,返回的是一维数列对象

# 一行或一列个数组时,返回的是一维数列对象 fig, axs= plt.subplots(1, 2, squeeze=True) axs[0].plot(np.arange(5)) axs[1].plot(np.arange(4)) 

在这里插入图片描述
多行多列个数组时,返回的是二维数列对象

# 多行多列个数组时,返回的是二维数列对象 fig, axs= plt.subplots(2, 2, squeeze=True) # fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2) x=np.linspace(0, 3, 100) axs[0,0].plot(x,x) axs[0,1].plot(x,x**2) axs[1,0].plot(x,x**3) axs[1,1].plot(x,x**4) 

在这里插入图片描述

2.3.2 指定False时

坐标系返回的总是二维数组对象

# 即使只创建了一个子图,坐标轴返回的依然是二维数组对象,调用时候指明象位 fig, ax = plt.subplots(squeeze=False) print("ax数组对象的形状:",ax.shape) x=np.linspace(0, 1.1, 100) # 定义支持中文全局字体 plt.rcParams["font.family"] ='PingFang HK' for k in np.arange(1,5): ax[0,0].plot(x, x**k,label=f"{k}次幂") #设置标题 ax[0,0].set_title("幂函数") #显示标签 plt.legend() 

在这里插入图片描述

2.4 subplot_kw参数

创建极坐标系

# 创建极坐标系 fig, axs = plt.subplots(subplot_kw=dict(polar=True)) 

在这里插入图片描述

参考文章:https://matplotlib.org/api/_as_gen/matplotlib.pyplot.subplots.html#matplotlib.pyplot.subplots

今天的文章
Matplotlib学习之subplots函数分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/80529.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注