九、Matplotlib——Subplot多合一

目录

 

一、第一种Subplot方法

1、两行两列矩阵式图

2、设置每一行显示不同的图个数

二、第二种Subplot方法

1、方式一

2、方式二

3、方式三


一、第一种Subplot方法

1、两行两列矩阵式图

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

print("*************两行两列矩阵式图**************")
fig = plt.figure()
# 创建子图,有多种方法
# 两行两列
print("=========第一张子图=========")
plt.subplot(2, 2, 1)
plt.plot([0, 1], [0, 1])
print("=========第二张子图=========")
plt.subplot(2, 2, 2)
plt.plot([0, 1], [0, 2])
print("=========第三张子图=========")
plt.subplot(2, 2, 3)
plt.plot([0, 1], [0, 3])
print("=========第四张子图=========")
# 两行两列图像的第四张图  plt.subplot(224)
plt.subplot(224)
plt.plot([0, 1], [0, 4])

plt.show()

2、设置每一行显示不同的图个数

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

print("*************设置每一行显示不同的图个数**************")
fig = plt.figure()
print("=========第一张子图=========")
# 两行一列,第一张图
plt.subplot(2, 1, 1)
plt.plot([0, 1], [0, 1])
print("=========第二张子图=========")
# 第二子图为什么是(2, 3, 4),分成两行三列第四张图??
# 因为分成了三列,r为行号,c为列号,所以第二行第一张图的坐标为 【 2,3,3 *(r-1)+ c 】
plt.subplot(2, 3, 4)
plt.plot([0, 1], [0, 2])
print("=========第三张子图=========")
plt.subplot(2, 3, 5)
plt.plot([0, 1], [0, 3])
print("=========第四张子图=========")
# 两行两列图像的第四张图  plt.subplot(224)
plt.subplot(236)
plt.plot([0, 1], [0, 4])

plt.show()

二、第二种Subplot方法

1、方式一

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec

fig = plt.figure()
print("=========第一张子图=========")
# 第一个参数 指代 三行三列
# 第二个参数 从图布中原点(0, 0)零行零列 开始作图
# colspan 列跨度,rowspan 行跨度,指的是 图分成的三行三列中,当前子图占的行数和列数
ax1 = plt.subplot2grid((3, 3), (0, 0), colspan=3, rowspan=1)
ax1.plot([1, 2], [1, 2])
# 设置 ax 的图属性
ax1.set_title("ax1_title")
print("=========第二张子图=========")
ax2 = plt.subplot2grid((3, 3), (1, 0), colspan=2, rowspan=1)
ax2.plot([1, 2], [1, 2])
print("=========第三张子图=========")
ax3 = plt.subplot2grid((3, 3), (1, 2), colspan=1, rowspan=2)
ax3.plot([1, 2], [1, 2])
print("=========第四张子图=========")
ax4 = plt.subplot2grid((3, 3), (2, 0), colspan=1, rowspan=1)
ax4.plot([1, 2], [1, 2])
print("=========第五张子图=========")
ax5 = plt.subplot2grid((3, 3), (2, 1), colspan=1, rowspan=1)
ax5.plot([1, 2], [1, 2])

plt.show()

2、方式二

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
"""
下标全都从 0 开始
"""
print("***************************")
fig = plt.figure()
# 三行三列的图布
gs = gridspec.GridSpec(3, 3)
print("=========第一张子图=========")
# 占用 gs 图布的 第零行所有列的空间
ax1 = plt.subplot(gs[0, :])
ax1.plot([1, 2], [1, 2])
# 设置 ax 的图属性
ax1.set_title("ax1_title")
print("=========第二张子图=========")
# 占用 gs 图布的 第 1 行 第 0 列到第 1 列列的空间
ax2 = plt.subplot(gs[1, :2])
ax2.plot([1, 2], [1, 2])
print("=========第三张子图=========")
# 占用 gs 图布的 第 1 行 到第三行 第 2 列的空间
ax3 = plt.subplot(gs[1:, 2])
ax3.plot([1, 2], [1, 2])
print("=========第四张子图=========")
# 占用 gs 图布的 最后一行 的 第 0 列的空间
ax4 = plt.subplot(gs[-1, 0])
ax4.plot([1, 2], [1, 2])
print("=========第五张子图=========")
# 占用 gs 图布的 最后一行 的  导数第二列的空间
ax5 = plt.subplot(gs[-1, -2])
ax5.plot([1, 2], [1, 2])

plt.tight_layout()
plt.show()

3、方式三

import numpy as np
import matplotlib.pyplot as plt
print("***************************")
# sharex  sharey 子图是否共享 x轴和 y轴
fig, ((ax11, ax12), (ax21, ax22)) = plt.subplots(2, 2, sharex=True, sharey=True)
ax11.scatter([1, 2], [1, 2])

plt.tight_layout()
plt.show()

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值