# subplot和subplots的区别

• stackoverflow回答，举了两者的例子说明。
• 看subplots的例子what-is-a-subplots-in-matplotlib可知，subplots相当于直接创建一组子图。一次调用可以得到n个子图，然后在子图上绘制即可。
• 而看subplot的csdn例子可知，你需要调用多次subplot来绘制子图，有n个待生成的子图就要调用n次subplot函数。

# subplots与ax.imshow例子

import matplotlib.pyplot as plt
import numpy as np

fig, axs = plt.subplots(2, 1)

red = [255,0,0]
green = [0,255,0]
yellow = [0,0,255]

row1 = [red,green,yellow]
row2 = [green,yellow,red]
row3 = [yellow,red,green]

axs[0].imshow([row1, row2, row3])

image2 = np.ndarray((3,3,3))
image2[:] = [row2, row3, row1]
print("image2 is instance of numpy array: ", isinstance(image2, np.ndarray))
axs[1].imshow(image2)

plt.show()


axs[0].axis("off")
axs[0].imshow([row1, row2, row3])


# subplots参数探究

## figsize

subplots的figsize参数主要用于设置整个画幅的大小，其中(4,4)代表400px*400px。其它单位使用参考官方文档figure_size_units

import matplotlib.pyplot as plt

def show_blank(nrow, ncol):
fig, axs = plt.subplots(nrow, ncol, sharex=True, sharey=True, figsize=(4, 4))
for ax in axs:
ax.text(0.5, 0.5, "xxxx")
plt.show()

show_blank(2,1)
show_blank(10,1)


## sharex sharey

import matplotlib.pyplot as plt

def show_blank(nrow, ncol, sharex, sharey):
fig, axs = plt.subplots(nrow, ncol, sharex=sharex, sharey=sharey, figsize=(8, 8))
for ax_row in axs:
for ax in ax_row:
ax.text(0.5, 0.5, "test text")
plt.show()

show_blank(2, 2, True, True)
show_blank(2, 2, False, False)


• sharex会让同一列内的图片都共享横坐标轴
• sharey会让同一行内的图片都共享纵坐标轴

# imshow参数与返回值

• cmap代表图画是灰色还是彩色。如果是RGB图画，可以忽略该参数。
• 在没有设置norm的情况下，vmin和vmax代表色域的最小值和最大值。

# FuncAnimation

import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation

nrow, ncol = 2, 2
fig, axs = plt.subplots(nrow, ncol, sharex=True, sharey=True, figsize=(8, 8))
texts = ["aaaa", "bbbb", "cccc", "dddd"]

def animate_diff(i):

for row in range(nrow):
for col in range(ncol):
axs[row, col].clear()

idx = (i + row * ncol + col) % len(texts)
axs[row, col].text(0.5, 0.5, f"({row},{col}) {texts[idx]}")

ani = FuncAnimation(fig, animate_diff, interval=1500, blit=False, repeat=True,
frames=100)

plt.show()


1. fig参数代表动画绘制在fig对象上。
2. 帧更新函数为animate_diff，每一帧会调用一次，在函数里可以利用axs对象更新画幅。animate_diff的参数i代表当前是第几帧
3. repeat参数代表是否重复播放。
4. interval=1500代表帧间隔为1500ms，frames=100代表一轮播放有100帧。

5. 第一个frame，四个子图分别显示a b c d
6. 第二个frame，四个子图分别显示b c d a
7. 第三个frame，四个子图分别显示c d a b
8. 第四个frame，四个子图分别显示d a b c

Original: https://blog.csdn.net/duoyasong5907/article/details/127543807
Author: Melody2050
Title: 理解subplots, ax.imshow, FuncAnimation

## Title: 5个例子介绍Pandas的merge并对比SQL中join

Pandas的merge函数根据公共列中的值组合dataframe。SQL中的join可以执行相同的操作。这些操作非常有用，特别是当我们在表的不同数据中具有共同的数据列（即数据点）时。

pandas的merge图解

“cust”包含5个客户的3条信息。列是id、年龄和类别。

“purc”包含客户id、机票号码和购买金额。

id是共同列的列，所以我们将在合并或联接时使用它。

## ; 示例1

import pandas as pd
cust.merge(purc, on='id')


Pandas的merge函数不会返回重复的列。另一方面，如果我们选择两个表中的所有列(“*”)，则在SQL join中id列是重复的。

mysql> select cust.*, purc.*
-> from cust join purc
-> on cust.id = purc.id

;+------+------+------+------+--------+--------+
| id   | age  | ctg  | id   | ticket | amount |
+------+------+------+------+--------+--------+
|    3 |   22 | B    |    3 |   1001 |  24.10 |
|    4 |   29 | C    |    4 |   1002 |  32.50 |
|    5 |   17 | B    |    5 |   1003 |  34.80 |
+------+------+------+------+--------+--------+


## 示例2

cust.merge(purc, on='id', how='left')


mysql> select cust.*, purc.*
-> from cust
-> left join purc
-> on cust.id = purc.id

;+------+------+------+------+--------+--------+
| id   | age  | ctg  | id   | ticket | amount |
+------+------+------+------+--------+--------+
|    3 |   22 | B    |    3 |   1001 |  24.10 |
|    4 |   29 | C    |    4 |   1002 |  32.50 |
|    5 |   17 | B    |    5 |   1003 |  34.80 |
|    1 |   34 | A    | NULL |   NULL |   NULL |
|    2 |   28 | A    | NULL |   NULL |   NULL |


purcdataframe和表中没有id为1或2的行。因此，purc中的列中填充了这些行的空值。

## 示例3

cust.merge(purc, on='id', how='outer')


MySQL没有提供”完整的外连接”，但是我们可以通过两个左连接来实现。

mysql> select cust.*, purc.*
-> from cust left join purc
-> on cust.id = purc.id
-> union
-> select cust.*, purc.*
-> from purc left join cust
-> on cust.id = purc.id
;+------+------+------+------+--------+--------+
| id   | age  | ctg  | id   | ticket | amount |
+------+------+------+------+--------+--------+
|    3 |   22 | B    |    3 |   1001 |  24.10 |
|    4 |   29 | C    |    4 |   1002 |  32.50 |
|    5 |   17 | B    |    5 |   1003 |  34.80 |
|    1 |   34 | A    | NULL |   NULL |   NULL |
|    2 |   28 | A    | NULL |   NULL |   NULL |
| NULL | NULL | NULL |    6 |   1004 |  19.50 |
| NULL | NULL | NULL |    7 |   1005 |  26.20 |
+------+------+------+------+--------+--------+


union操作符将多个查询的结果堆叠起来。这类似于Pandas的concat功能。

## 示例4

`
cust.merge(purc, on=’id’, how=’left’)[[‘ctg’,’amount’]].groupby(‘ctg’).mean()

ctg amount

Original: https://blog.csdn.net/m0_46510245/article/details/113709087
Author: deephub
Title: 5个例子介绍Pandas的merge并对比SQL中join

(0)

### 大家都在看

• #### 数字图像处理与Python实现

1.数字图像处理基础知识 1.1数字图像简介 目的 提升图像的视觉感知质量 从图像中提取感兴趣区域或特征 [En] Extract regions of interest or f…

Python 2023年1月10日
037
• #### python 用 matplotlib 的 basemap 绘制简单世界地图

0、import 1、地球的”蓝色弹珠”投影照片 效果： 2、简单的世界地图 效果： Original: https://www.cnblogs.com/s…

Python 2022年8月18日
0142
• #### 数组搜索+python课后小作业

创建一个5*5网格世界，遵守以下规则：对不同行为进行奖励和乘法，选出最优的方案。 题目： 思路： 要编写解决问题的程序，请执行以下操作： [En] To write a progr…

Python 2023年1月12日
037
• #### 接口自动化框架搭建：python+yaml+request+pytest+allure，实现单接口自动化测试

python+yaml+request+pytest+allure，实现单接口自动化测试 之前的接口自动化中只用excel管理用例，但是用过yaml之后，恩，真香。 目录 pyth…

Python 2023年1月17日
018
• #### matplotlib之pyplot模块——填充两条曲线之间区域（fill_between、fill_betweenx）

概述 fill_between和 fill_betweenx函数的作用都是填充两条曲线之间的区域。其中 fill_between函数作用是填充两条水平曲线之间的区域。 fill_b…

Python 2023年1月14日
025

文章目录 对抗攻击 对抗防御 对抗攻击 图片可以看成一个很长的向量，如果在图片的每个像素上都加上一个很小的pertubation(扰动、杂讯)，再把它输入到神经网络，这个时候分类器…

Python 2023年2月2日
035
• #### 新一代Python包管理工具来了

说起 Python的包管理工具，大家第一时间想到的肯定是 pip、 conda等经典工具。但最近我发现了一款新颖的 Python包管理工具——pdm，它受到 PEP582（ htt…

Python 2022年8月14日
0101
• #### pygame下载（非常详细）

pygame安装 第一次安装pygame，从网上查了很多资料，各种方式都有，我发现了一种很简单的方法，不用去官网找，直接输入命令就能下载，希望能给大家提供一些参考！ 打开终端 1、…

Python 2023年1月20日
033

Python 2023年1月4日
031
• #### Win11 VS2019 C++调用matplotlib

环境：WIN 11, Python3.9 64bit VS2019 1、先安装python中matplotlib和numpy库（没有测试没有安装会怎样，反正先安装了）。win+r …

Python 2023年1月14日
033
• #### ROS rosrun、launch命令无法TAB自动补全功能包

ROS rosrun、launch命令无法TAB自动补全功能包 问题 关于我将虚拟机扩容后也可能是其他原因（装了中文语言包、或者使无意间更新了依赖），我运行 rosrun命令甚至没…

Python 2022年11月10日
083
• #### 牛客刷题总结——Python入门08：面向对象、正则表达式

抵扣说明： 1.余额是钱包充值的虚拟货币，按照1:1的比例进行支付金额的抵扣。2.余额无法直接购买下载，可以购买VIP、C币套餐、付费专栏及课程。 Original: https:…

Python 2022年12月25日
027
• #### C++、C++-OpenCV、Python、Python-Numpy、MATLAB的除法取余(余数)方法总结

C++、Python、MATLAB的除法取余方法总结对比。 既然本文的研究对象是余数，那么显然是两个整数之间的除法，这才是我们主要的运用场景，这一点大家要明白。当然从文中我们也可以…

Python 2023年1月11日
046
• #### [PyTorch]手动实现二维卷积神经网络完成车辆分类任务

文章目录 （一）实验任务 （二）数据处理 * 1、读取和划分数据集 2、创建Dataset （三）手写实现二维卷积 * 1、卷积操作的实现 2、多通道输入的卷积实现 3、多通道输入…

2022年8月20日
0210
• #### 高级爬虫面试题测试题 v1.3

Python Web高级爬虫工程师测试题(请本文件发送到: SpiderTestQuestion@163.com 并附带简历) 1、 用yield写一个斐波那契数列的生成器函数。 …

2022年9月5日
0141
• #### 一文掌握vscode远程调试python代码

0 背景 在《一文掌握vscode远程gdb调试》文章中，介绍了如何使用 vscode 调试 c/c++ 代码，作为该文的姊妹篇，本文对调试 python 代码的方法做一个整理。 …

Python 2022年12月25日
053