subplot()函数--Matplotlib

news/2025/1/12 18:53:27/

划分画布的主要函数(第一部分)–subplot函数
首先引入一个概念:子区:顾名思义就是将画布分成若干个子画布,这些子画布构成绘图区域,在这些 绘图区域上分别绘制图 形,实现一张画布多张图形分区域展示的效果。
如下图所示:一张画布划分成三个区域,展示三张图形
在这里插入图片描述
在这里插入图片描述

1. 函数功能

    Add a subplot to the current figure.在当前画布中增加子图。

2. 函数语法

subplot(nrows, ncols, index, **kwargs)
subplot(pos, **kwargs)
subplot(**kwargs)
subplot(ax)

3. 函数参数与示例

参数含义
(nrows, ncols, index)子图的位置;画布被划分成 nrows和ncols;索引 index从左上位置1开始,向右增加;索引index也可以是元组,如(3,1,(1,2))表示画布被划分成3行1列,占据索引位置为1,2的位置;当index的数量小于9可以省略逗号","。即:(3,2,5)可以写为(325)
projection绘图区域的投影类型;默认rectilinear;{None, ‘aitoff’, ‘hammer’, ‘lambert’, ‘mollweide’, ‘polar’, ‘rectilinear’, str}
polar布尔值,绘图区域的投影类型;默认取值False;当取值维True时,为极区图;等价于projection=‘polar’
sharex,sharey取值为子区,同哪个子区的x或y轴保持一样的边界、刻度

3.1 参数(int,int,index)

3.1.1 index为单个数字

import matplotlib.pyplot as plt
import numpy as npx = np.linspace(-2*np.pi,2*np.pi,1000)
y1 = np.sin(x)
y2 = np.cos(x)plt.subplot(1,2,2)
plt.plot(x,y1)plt.show()

在这里插入图片描述

3.1.2 索引为元组

import matplotlib.pyplot as plt
import numpy as npx = np.linspace(-2*np.pi,2*np.pi,1000)
y1 = np.sin(x)
y2 = np.cos(x)plt.subplot(1,3,(1,2))
plt.plot(x,y1)plt.show()

在这里插入图片描述
从图中可以看到图形占到整个画布的2/3,是将画布等分成3部分,图形占据1-2两部分。

3.1.3 三维整数

该数字会被解读为为三个单位整数分别给出,如(235)与(2,3,5)是一样的,但是需要注意这种方法只能在小于等于9个子图的情况下使用(超过9个子图第三个参数就会变成两位数)如:(4,3,10)只能使用第一种加分割号的方法,而不能使用(4310)

争取使用(4,3,10)的写法

import matplotlib.pyplot as plt
import numpy as npx = np.linspace(-2*np.pi,2*np.pi,1000)
y1 = np.sin(x)
y2 = np.cos(x)plt.subplot(4,3,(10))
plt.plot(x,y1)plt.show()

在这里插入图片描述
当使用(4310)
在这里插入图片描述

3.2 参数 projection

import matplotlib.pyplot as plt
import numpy as npx = np.linspace(-2*np.pi,2*np.pi,1000)
y1 = np.sin(x)
y2 = np.cos(x)plt.subplot(3,3,1,projection=None)
plt.plot(x,y1)plt.subplot(3,3,2,projection='polar')
plt.plot(x,y2)plt.subplot(3,3,3,projection='aitoff')
plt.plot(x,y1)plt.subplot(3,3,4,projection='hammer')
plt.plot(x,y2)plt.subplot(3,3,5,projection='lambert')
plt.plot(x,y1)plt.subplot(3,3,6,projection='mollweide')
plt.plot(x,y2)plt.subplot(3,3,7,projection='rectilinear')
plt.plot(x,y1)plt.show()

在这里插入图片描述

3.3 参数 polar

'''
import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mplmpl.rcParams['font.sans-serif'] = ['KaiTi']
mpl.rcParams['axes.unicode_minus'] = Falsex = np.linspace(0, 2 * np.pi, 500)
y1 = np.sin(x) * np.cos(x)
y2 = np.exp(-x)
y3 = np.sqrt(x)
y4 = x / 4fig, ax = plt.subplots(4, 1, facecolor='beige', sharex=True,subplot_kw=dict(facecolor='seashell'))fig.subplots_adjust(left=0.05, right=0.98, bottom=0.05,top=0.95, hspace=0)ax[0].plot(x, y1, c='r', lw=2)
ax[1].plot(x, y2, c='y', ls="--")
ax[2].plot(x, y3, c='g', ls=":")
ax[3].plot(x, y4, c='m', ls='-.', lw=2)plt.show()
'''import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mplplt.rcParams['font.sans-serif'] = ['Microsoft YaHei']a = np.linspace(0, 2.0 * np.pi, 10, endpoint=False)
b = [382, 340, 250, 235, 87, 86, 84, 82, 64, 22]
city = ['深圳', '广州', '呼和浩特', '北京', '佛山', '郑州', '南京', '汉中', '西安', '赤峰']
plt.subplot(111, polar=True)
plt.bar(a, b, width=0.2 * np.pi, tick_label=city,color=['skyblue', 'pink', 'y', 'r', 'g', 'm', 'c', 'purple', 'b', 'darkorange'])plt.show()

在这里插入图片描述

3.4 参数 sharex、sharey

'''
import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mplmpl.rcParams['font.sans-serif'] = ['KaiTi']
mpl.rcParams['axes.unicode_minus'] = Falsex = np.linspace(0, 2 * np.pi, 500)
y1 = np.sin(x) * np.cos(x)
y2 = np.exp(-x)
y3 = np.sqrt(x)
y4 = x / 4fig, ax = plt.subplots(4, 1, facecolor='beige', sharex=True,subplot_kw=dict(facecolor='seashell'))fig.subplots_adjust(left=0.05, right=0.98, bottom=0.05,top=0.95, hspace=0)ax[0].plot(x, y1, c='r', lw=2)
ax[1].plot(x, y2, c='y', ls="--")
ax[2].plot(x, y3, c='g', ls=":")
ax[3].plot(x, y4, c='m', ls='-.', lw=2)plt.show()
'''import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mplmpl.rcParams['font.sans-serif'] = ['KaiTi']
mpl.rcParams['axes.unicode_minus'] = Falsex1 = np.linspace(0, 2 * np.pi, 500)
y1 = np.sin(x1)
x2 = np.arange(-5, 5)
y2 = np.exp(x2)
x3 = np.linspace(-3, 3)
y3 = np.power(x3, 2)plt.subplot(221)
plt.plot(x1, y1, c='y')
ax2 = plt.subplot(222)
plt.plot(x2, y2, c='c')
plt.subplot(2, 2, (3, 4), sharex=ax2)
plt.plot(x3, y3, c='m')plt.show()

在这里插入图片描述

3.5 其他参数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

'''
import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mplmpl.rcParams['font.sans-serif'] = ['KaiTi']
mpl.rcParams['axes.unicode_minus'] = Falsex = np.linspace(0, 2 * np.pi, 500)
y1 = np.sin(x) * np.cos(x)
y2 = np.exp(-x)
y3 = np.sqrt(x)
y4 = x / 4fig, ax = plt.subplots(4, 1, facecolor='beige', sharex=True,subplot_kw=dict(facecolor='seashell'))fig.subplots_adjust(left=0.05, right=0.98, bottom=0.05,top=0.95, hspace=0)ax[0].plot(x, y1, c='r', lw=2)
ax[1].plot(x, y2, c='y', ls="--")
ax[2].plot(x, y3, c='g', ls=":")
ax[3].plot(x, y4, c='m', ls='-.', lw=2)plt.show()
'''import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mplmpl.rcParams['font.sans-serif'] = ['KaiTi']
mpl.rcParams['axes.unicode_minus'] = Falsex1 = np.linspace(0, 2 * np.pi, 500)
y1 = np.sin(x1)
x2 = np.arange(-5, 5)
y2 = np.exp(x2)plt.subplot(121, facecolor='lightgreen')
plt.plot(x1, y1, c='y')
ax2 = plt.subplot(122, facecolor='y')
plt.plot(x2, y2, c='c')plt.show()

在这里插入图片描述

4. 返回值

返回值的类型取决于projection参数指定的投影类型,当projection=rectilinear 时,返回axes

官方文档subplot


http://www.ppmy.cn/news/488820.html

相关文章

hdu(4310)

题目&#xff1a; http://acm.hdu.edu.cn/showproblem.php?pid4310 #include<iostream> #include <stdio.h> #include<string.h> #include<algorithm> using namespace std; struct node{int dps;int hp;friend booloperator<(constnode a,const n…

AcWing——4310.树的DFS

4310. 树的DFS - AcWing题库 给定一棵 n 个节点的树。 节点的编号为 1∼n&#xff0c;其中 1 号节点为根节点&#xff0c;每个节点的编号都大于其父节点的编号。 现在&#xff0c;你需要回答 q 个询问。 每个询问给定两个整数 ui,ki。 我们希望你用 DFS&#xff08;深度优先搜索…

3401

数据结构实验之排序四&#xff1a;寻找大富翁 Time Limit: 200 ms Memory Limit: 512 KiB Submit Statistic Discuss Problem Description 2015胡润全球财富榜调查显示&#xff0c;个人资产在1000万以上的高净值人群达到200万人&#xff0c;假设给出N个人的个人资产值&…

HDU-4310-HERO

原题&#xff1a; When playing DotA with god-like rivals and pig-like team members, you have to face an embarrassing situation: All your teammates are killed, and you have to fight 1vN. There are two key attributes for the heroes in the game, health point …

hdu 4310 Hero

hdu 4310 Hero 题目链接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid4310 贪心水 题目大意&#xff1a;以DotA为背景&#xff0c;英雄PK一对多&#xff0c;我方英雄不死&#xff0c;问杀死敌方所有英雄的时候&#xff0c;我方min英雄战损&…

CVE-2021-4034:Linux Polkit 权限提升漏洞复现及修复

CVE-2021-4034&#xff1a;Linux Polkit 权限提升漏洞复现及修复 本文仅为验证漏洞&#xff0c;在本地环境测试验证&#xff0c;无其它目的 CVE 编号&#xff1a; CVE-2021-4034 漏洞说明&#xff1a; 近期&#xff0c;国外安全研究团队在 polkit 的 pkexec 中发现存在的本地…

AR9344

MW4530R 750M FW4530r &#xffe5;60 tp 2041n, tl-wdr4320有USB接口 TP-LINK 941v6 &#xffe5;70 2041v1 2.4G WDR 4310 WDR4320 WDR3500 WDR3600 水星 MW4530R MW3030R 水星mw4530r&#xff0c;考虑和tp4310配置基本相同 附上4530r的配置&#xff0c;其实和4310几乎一样…

STLloader预览服务端stl文件

最近写项目的时候遇到了一个问题 就是我使用STLloader时 loader.load("服务端地址"&#xff0c;function) 会报csp错误 Content Security Policy: 页面设置阻止读取位于 blob:http://localhost:8080/06f90dbb-6fa5-4310-aad0-7a85b227f479 的一项资源("connec…