一、背景
做计算机应用数学作业时要求使用matplotlib库在同一张图上绘制两个图像,但是这两个图像的大小不同,百度之后发现大部分只是转载的同一篇博客,而且只能实现部分子图比例排版,并不能随意设置各个子图占整个图像的比例。经过查询官方文档后发现可以通过其他方式实现同一个图像上排列多个不同大小比例的子图,故写此博客,以供参考。
二、实例
- 左右两个图并列
代码:
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
fig = plt.figure()
# 设置一个网格(grid),行数为1,列数为2,宽度比例为3:1
gs = gridspec.GridSpec(nrows=1, ncols=2, width_ratios=[3, 1])
# 增加第一个(左边的图,y=x)
ax0 = fig.add_subplot(gs[0, 0])
ax0.plot([0, 1], [0, 1])
# 增加第二个图(右边的图,y=1-x)
ax1 = fig.add_subplot(gs[0, 1])
ax1.plot([0, 1], [1, 0])
plt.show()
结果:
![](https://img-blog.csdnimg.cn/img_convert/fd358c08a8d491149dec66b07b45ed23.png)
2. 左上角右下角两个图
代码:
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
fig = plt.figure()
# 设置一个网格(grid),行数为2,列数为2,宽度比例为1:2,高度比为[1:2]
gs0 = gridspec.GridSpec(nrows=2, ncols=2, width_ratios=[1, 2], height_ratios=[1,2])
# 增加第一个(左上角的图,y=x)
ax0 = fig.add_subplot(gs0[0, 0])
ax0.plot([0, 1], [0, 1])
# 增加第二个图(右下角的图,y=1-x)
ax1 = fig.add_subplot(gs0[1, 1])
ax1.plot([0, 1], [1, 0])
plt.show()
结果:
![](https://img-blog.csdnimg.cn/img_convert/0edc9bc35aaab313677b51d62ddcae0f.png)
四、参考链接
就在刚刚我查到一篇更加详细的博客链接在此。这篇博客写的比我写的要详细,如果依旧有不明白的或者想更深入的了解可以参考这篇博客。
官方文档