Python Matplotlib 子图

article/2025/9/22 9:41:44

目录

1、绘制多个子图

2、绘图在指定的子图上 

 3、subplots命令:快速生成多个子图框架

 3.1 快速布局

3.2 画一个图形 

 3.3 多个图形共用一个轴

 3.4 与seaborn联合使用

 3.5 使用数组方式指定子图

 3.6 嵌套图


在matplotlib中,所有的绘图操作实际上都是以Axes对象为独立的绘图区域进行,在一个Figure对象中可以有多个子图,这些子图可以叠加存在,从而形成图中图效果。

1、绘制多个子图

subplot命令:可以将figure对象分为多个区域,每个区域分别放置一个Axes对象进行绘图。

matplotlib.pyplot.subplot(
nrows / ncols = 1 #: 图组的行/列数。#整个Figure对象区域被划分为nrows行 * ncols列。#然后按照从左到右、从上到下的顺序对每个区域进行编号,左上区域的编号为1。
index #: 指定所创建Axes对象所在的区域。
)
#如果numRows、numCols和Index三个参数都小于10,则可以把它们缩写成一个整数。
#subplot(323)和subplot(3,2,3)的含义相同。

 子图区域设置

from matplotlib import pyplot as plt 
plt.subplot(221) # 前面两个参数分别表示行和列,即将figure分为2行2列的区域,该图形的位置为第一行的左图
plt.subplot(222) # 第一行的右图
plt.subplot(212) # 第二整行
plt.plot([1,2,2,1]) #图形绘制在最后一个子图上
plt.show()

绘制结果如下: 

2、绘图在指定的子图上 

指定图表显示位置,即指定要画的图形显示在指定的子图上。

plt.subplot(221)
ax1 = plt.subplot(222) 
plt.subplot(212) 
plt.sca(ax1)
plt.plot([1,2,2,1]) #这样图形就显示在第二个子图中
plt.show()

 3、subplots命令:快速生成多个子图框架

 subplots中参数描述,可以设置图形的个数,以及图形展示是否共用轴等。

matplotlib.pyplot.subplots(
nrows /ncols = 1 #: 图形网格的行/列数sharex, sharey = False #: 在图组中是否共用行/列坐标轴#True or ‘all’: 对应的单元格都将共用行/列坐标轴#False or ‘none’: 各单元格独立设定行/列坐标轴#‘row’: 同一行的单元格将共用行/列坐标轴#‘col’: 同一列的单元格将共用行/列坐标轴
squeeze = True #: 是否尽量简化返回的Axes对象#False时即使只有一个单元格,也返回二维数组subplot_kw #: dict, 未来调用add_subplot()建立子图时需要传送的参数
) #返回值:#fig : matplotlib.figure.Figure对象#ax : Axes对象/Axes数组对象

 3.1 快速布局

fig, axes = plt.subplots(2, 3)

3.2 画一个图形 

import seaborn as sns
fig, ax0 = plt.subplots()
sns.distplot([1,2,4,9,4,3,5], ax = ax0) # 此处ax参数也可以不指定
ax0.set_title('Sample plot')

 3.3 多个图形共用一个轴

f, (ax1, ax2) = plt.subplots(1, 2, sharey = True)#共用列坐标轴
ax1.hist([200,300,500,900])
ax1.set_title('Sharing Y axis')
ax2.plot([0,200,300])

 3.4 与seaborn联合使用

# 与seaborn联合使用
f, (ax1, ax2) = plt.subplots(1, 2)
sns.boxplot(y = [200,500,600], ax = ax1)
ax1.set_title('1')
sns.boxplot(y = [300,700,800], ax = ax2)
ax2.set_title('2')

 3.5 使用数组方式指定子图

# 使用数组方式指定子图
fig, axes = plt.subplots(2, 2)
sns.boxplot(y = [200,500,600], ax = axes[0, 0])
sns.boxplot(y = [300,700,800], ax = axes[1, 1])

 

 3.6 嵌套图

#嵌套图
import numpy as npx = np.linspace(0,10,1000)
y2 = np.sin(x**2)
y1 = x**2fig,ax1 = plt.subplots()left,bottom,width,height = [0.22,0.45,0.3,0.35]
ax2 = fig.add_axes([left,bottom,width,height])ax1.plot(x,y1)
ax2.plot(x,y2)


http://chatgpt.dhexx.cn/article/UeQ3Uyju.shtml

相关文章

Matplotlib多子图绘图后保存单个子图

import numpy as np import matplotlib.pyplot as plt# 用于单独保存子图的函数 def save_subfig(fig,ax,save_path,fig_name):bbox ax.get_tightbbox(fig.canvas.get_renderer()).expanded(1.02, 1.02)extent bbox.transformed(fig.dpi_scale_trans.inverted())fig.savefig(…

Matplotlib子图

子图 **有时候我们需要从多个角度进行数据的比较、分析,因此就需要用到子图。**子图的本质是在一个较大的图形中同时放置一组较小的坐标轴,布局形式可以多种多样,不拘泥于我们在第五集中举的那种网格图的形式。 一般化的子图 我们先进行一…

latex生成子图及并列图

latex生成子图及并列图 \usepackage{graphicx}%插入图片 \usepackage{subfigure} %子图 子图 代码 \begin{figure} \centering \subfigure[Average total cost with different schemes.]{ \includegraphics[width3in]{V9-1-vary-S} } \subfigure[Average time delay with …

【数据分析之道-Matplotlib(三)】Matplotlib 绘制子图

文章目录 专栏导读1、前言2、subplot()函数2.1创建一个包含 2x2 的子图布局,并在每个子图中绘制不同的图形2.2创建一个包含 1x3 的子图布局,并绘制三种不同类型的图形2.3创建一个包含 2 行 1 列的子图布局,绘制散点图和柱状图 3、subplots()函…

matplotlib 基础_子图创建

目录 创建Axes方法1 、 add_subplot 函数:快速创建1.1 设置不等尺寸的子图 2、add_axes 函数:自由设置子图的位置、大小3、指定子图空间:当子图大小成倍数时 一张图理解matplotlib Figure 和 Axes Figure 就是图片,一个完整的图片…

plt.plot画子图时,子图变形,调整子图大小

在画图时候遇到的记录一下 希望可以帮到遇到相同问题的伙伴儿~~ 本来是这样: 本来代码: plt.subplot(1, 2, 1)plt.rcParams[font.sans-serif] [SimHei]plt.rcParams[axes.unicode_minus] Falseplt.rcParams[figure.dpi] 1080plt.rcParams[figure.fi…

关于图论中导出子图的概念

关于图论中导出子图的概念 1、导出子图 A subgraph H is called an induced subgraph of X if for any a , b ∈ E ( H ) a,b \in E(H) a,b∈E(H) if and only if a , b ∈ E ( X ) a,b \in E(X) a,b∈E(X). 2、点导出子图 设S是V(G)的子集,以S为点集&#xf…

极大连通子图与极小连通子图

无向图 连通图: 在无向图中,若从定点V1到V2有路径,则称顶点V1和V2是连通的。如果图中任意一对顶点都是连通的,则称此图是连通图。(连通的无向图)极大连通子图: 1.连通图只有一个极大连通子图&a…

python数据可视化玩转Matplotlib subplot子图操作,四个子图(一包四),三个子图,子图拉伸

目录 一、创建子图 1.1 下图是绘制的子图: 1.2 代码释义: 二、绘制子图 2.1 代码引入 2.2 图形绘制 三、子图布局 3.1 子图布局说明 四、子图大小 4.1 子图大小调整 五、子图间距 5.1 子图代码调整 六、子图位置 6.1 代码引入 6.2 完整代码…

极大连通子图与极小连通子图(带图讲解)

因为本人对于这一块知识存在疑惑,在学习了相关知识后将自己的理解分享给大家,如有错误,欢迎纠正。 首先我们先明确一下,极小连通子图与极大连通子图是在无向图中进行讨论的。 极大强连通子图是在有向图中进行讨论的,不…

Python 调整子图大小、位置【plt.axes()自定义子图】

效果图: plt.axes()绘图结果 上图一共三个子图,两个横向子图对齐右侧纵向长图。 本来想用plt.subplot()函数画,结果找了半天都是下图这种结果: 只能合并列,不能合并行 plt.subplot()绘图结果 因此,我放…

子图的概念

设G(V,E)为一个图,H(V’,E’)也是一个 图,称H为G的一个子图(subgraph),如果 ,并且对任意的边euv∈E’必须有u,v∈V’,记为 , 此时也称G为H的母图(super graph). 设H(V’,E’)为G(V,E)的一个子图,称H为G的生成(支撑)子图(spanning subgraph),如果V’V. 设G(V,E)是一个图,,构造一…

最大完全子图和极大连通子图

最近学习图论的一串小结之一 完全图&完全子图&最大完全子图 完全图:任意两点都恰有一条边相连的图(任意两点都相邻)。 完全子图:满足任意两点都恰有一条边相连的子图,也叫团。 最大完全子图:所有完全子图中顶点数最大…

子图,生成子图和导出子图

所有的顶点和边都属于图G的图称为G的子图。含有G的所有顶点的子图称为G的生成子图。 设V1是V的一个非空子集,以V1为顶点集,以两端点均在V1中的边的全体为边集的子图称为G的导出子图,记作G[V1]。导出子图G[V\V1]记为G-V1,它是从G中…

子图、生成子图、导出子图和主子图

所有的顶点和边都属于图G的图称为G的子图。含有G的所有顶点的子图称为G的生成子图。 设V1是V的一个非空子集,以V1为顶点集,以两端点均在V1中的边的全体为边集的子图称为G的导出子图,记作G[V1]。导出子图G[V\V1]记为G-V1,它是从…

子图,生成子图(Spanning Subgraph),导出子图(Induced Subgraph)的定义

首先给出一些定义。原图G用G (V, E)表示,V是G中的所有顶点的集合;E是G中所有边的集合。 子图 定义:子图G’中所有的顶点和边均包含于原图G。即E’∈E,并且V’∈V。 生成子图(Spanning Subgraph) 定义&…

图论中的概念(1)——子图、商图与补图

1.子图(subgraph) 设G(V, E)和G¢(V¢, E¢)是两个(有向的或无向的)图。 (1) 若V¢V且E¢ E,则称G¢为G的子图; (2) 若V¢V且 E¢ E,则称G¢为G的真子图(proper-); (3) 若V¢V且E…

图的基本概念

图的基本概念 一个图 G 它可以由顶点集(图 G 中顶点的有限非空集) V 和边集(图 G 中顶点之间的关系集合) E 所组成。图中顶点个数也可以称为图的阶;任何一条边的两头必须连接某一个顶点。图不可以是空,即顶…

图论(3)子图,图运算,路与连通性

目录 一、子图相关概念 1.子图概念 2.点导出子图与边导出子图 点导出子图 边导出子图 3.图的生成子图 二、图运算 1.图的删点、删边运算 删点运算 删边运算 2.图的并运算 3.图的交运算 4.图的差运算 5.图的对称差运算或环和运算 6.图的联运算 7.图的积图 8.图…

数据可视化——子图的绘制及坐标轴共享

一、绘制固定区域的子图 matplotlib可以将整个画布规划成等分布的m*n(行 x 列)的矩阵区域,并对每个区域进行编号。 1.1、绘制单子图 使用pyplot()函数的subplot()可以在规划好的某个区域中绘制单个子图。 语法格式如下: subplo…