Pythont绘制子图(1)

1、问题描述

很多时候,我们需要将一组图像放在一起进行比较,这时,就需要绘制子图。如下列出三种绘制子图的方式
(1)subplot(nrows, ncols, index)
subplot绘图是一个子图一个子图绘制,函数的参数中nrows和ncols决定需要绘制几个子图,如何排列,如nrows=3,ncols=4,表示绘制三行四列共12个子图。index表示在第几个子图上绘制,从左上角开始是第一个图,以此类推。
例:

import numpy as np
import matplotlib.pyplot as plt
n = 128
X = np.random.normal(0, 1, n)  # 生成随机数
Y = np.random.normal(0, 1, n)

fig = plt.figure(figsize=(16, 8))
ax1 = plt.subplot(3, 3, 1)  # 3行3列的第一个位置
ax1.scatter(X, Y, c=X, alpha=0.5)
ax1.set_title("一", color='red')
ax2 = plt.subplot(3, 3, 2)  # 3行3列的第2个位置
ax3 = plt.subplot(3, 3, 3)  # 3行3列的第3个位置
ax3.scatter(X, Y, c=Y, alpha=0.5)
ax3.set_title("三", color='red')
ax4 = plt.subplot(3, 3, 4)  # 3行3列的第4个位置
ax5 = plt.subplot(3, 3, 5)  # 3行3列的第5个位置
ax5.scatter(X, Y+2, c=Y, alpha=0.5)
ax5.set_title("五", color='red')
ax6 = plt.subplot(3, 3, 6)  # 3行3列的第6个位置
ax7 = plt.subplot(3, 3, 7)  # 3行3列的第7个位置
ax7.scatter(X, Y+2, c=X, alpha=0.5)
ax7.set_title("七", color='red')
ax8 = plt.subplot(3, 3, 8)  # 3行3列的第8个位置
ax9 = plt.subplot(3, 3, 9)  # 3行3列的第9个位置
ax9.scatter(X+2, Y+2, c=X+Y, alpha=0.5)
ax9.set_title("九", color='red')
plt.show()

其中第2、4、6、8子图是空图
(2)subplots(nrows=1, ncols=1)
subplots同时创建多个axe,且返回的值的类型为元组,其中包含两个元素:第一个为一个画布,第二个是子图 。
例:

fig1, ax = plt.subplots(3, 3)
ax[0][1].scatter(X, Y, c=X, alpha=0.5)
ax[1][0].scatter(X, Y, c=Y, alpha=0.5)
ax[1][2].scatter(X, Y+2, c=Y, alpha=0.5)
ax[2][1].scatter(X, Y+2, c=X, alpha=0.5)
plt.show()

在这里插入图片描述
(3)add_subplot
与subplot作图相似,都是一个一个绘图,但是add_subplot是面向对象画图。当然,plt.subplot(3,3,1)也可以表示为plt.subplot(331).

fig2 = plt.figure(figsize=(16, 8))
aex1 = fig2.add_subplot(331)
aex1.scatter(X, Y, c=X, alpha=0.3)
aex2 = fig2.add_subplot(332)
aex2.scatter(X, Y, c=X, alpha=1)
aex3 = fig2.add_subplot(333)
aex3.scatter(X, Y, c=Y, alpha=0.3)
aex4 = fig2.add_subplot(334)
aex4.scatter(X, Y, c=Y, alpha=1)
aex5 = fig2.add_subplot(335)
aex5.scatter(X, Y+2, c=Y, alpha=0.3)
aex6 = fig2.add_subplot(336)
aex6.scatter(X, Y+2, c=Y, alpha=1)
aex7 = fig2.add_subplot(337)
aex7.scatter(X, Y+2, c=X, alpha=0.3)
aex8 = fig2.add_subplot(338)
aex8.scatter(X, Y+2, c=X, alpha=1)
aex9 = fig2.add_subplot(339)
aex9.scatter(X+2, Y+2, c=X+Y, alpha=0.3)
plt.show()

在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值