[python] matplotlib.pyplot 绘制高宽不同、多行多列子视图

假如我们想要绘制这样的效果:

方式1

# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import numpy as np

# 声明一个GridSpec对象实例,创建的是6行2列的图像布局。
grid = plt.GridSpec(nrows=6, ncols=2, wspace=0.2, hspace=0.2)

# 设置整个图像大小。
plt.figure(figsize = (12, 10))  
# 第1个子视图 占第一行
plt.subplot(grid[0, :])  
plt.hist(np.random.rand(50), orientation='horizontal', edgecolor = 'black')

# 第2个子视图 占第二行
plt.subplot(grid[1, :])  
plt.scatter(np.random.rand(100),np.random.rand(100), color = 'r', edgecolor = 'black')

# 第3个子视图 占第三行
plt.subplot(grid[2, :])
plt.plot(np.arange(10), np.random.rand(10))

# 第4个子视图 占第四、五行 第一列
plt.subplot(grid[3:5, 0])
plt.plot(np.arange(10), np.arange(10) ** 2)
# 第5个子视图 占第四、五行 第二列
plt.subplot(grid[3:5, 1])
plt.plot(np.arange(8), -np.arange(8) ** 2)

# 第6个子视图 占第六行
plt.subplot(grid[5, :])
plt.plot(np.arange(10), np.random.rand(10))

plt.show()

方式2:

在上面做一点点修改,记住每个子视图,方便以后的操作,建议使用这种方式。

# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import numpy as np

# 声明一个GridSpec对象实例,创建的是6行2列的图像布局。
grid = plt.GridSpec(nrows=6, ncols=2, wspace=0.2, hspace=0.2)

# 设置整个图像大小。
plt.figure(figsize = (12, 10))  
# 第1个子视图 占第一行
axes0 = plt.subplot(grid[0, :])  
axes0.hist(np.random.rand(50), orientation='horizontal', edgecolor = 'black')

# 第2个子视图 占第二行
axes1 = plt.subplot(grid[1, :])  
axes1.scatter(np.random.rand(100),np.random.rand(100), color = 'r', edgecolor = 'black')

# 第3个子视图 占第三行
axes2 = plt.subplot(grid[2, :])
axes2.plot(np.arange(10), np.random.rand(10))

# 第4个子视图 占第四、五行 第一列
axes3 = plt.subplot(grid[3:5, 0])
axes3.plot(np.arange(10), np.arange(10) ** 2)
# 第5个子视图 占第四、五行 第二列
axes4 = plt.subplot(grid[3:5, 1])
axes4.plot(np.arange(8), -np.arange(8) ** 2)

# 第6个子视图 占第六行
axes5 = plt.subplot(grid[5, :])
axes5.plot(np.arange(10), np.random.rand(10))

plt.show()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值