在Matplotlib中定位5个子图

Roh*_*hit 6 python matplotlib

我想定位5个子图,使得顶部有三个,底部有两个,但是彼此相邻.当前代码接近但我希望最终结果如下所示(忽略灰线):

在此输入图像描述

import matplotlib.pyplot as plt

ax1 = plt.subplot(231)
ax2 = plt.subplot(232)
ax3 = plt.subplot(233)
ax4 = plt.subplot(234)
ax5 = plt.subplot(236)

plt.show()
Run Code Online (Sandbox Code Playgroud)

当前渲染

esp*_*ang 10

您可以使用colspan当您使用suplot2grid而不是subplot时.

import matplotlib.pyplot as plt

ax1 = plt.subplot2grid(shape=(2,6), loc=(0,0), colspan=2)
ax2 = plt.subplot2grid((2,6), (0,2), colspan=2)
ax3 = plt.subplot2grid((2,6), (0,4), colspan=2)
ax4 = plt.subplot2grid((2,6), (1,1), colspan=2)
ax5 = plt.subplot2grid((2,6), (1,3), colspan=2)
Run Code Online (Sandbox Code Playgroud)

然后每个子图需要为2个cols宽,以便第二行中的子图可以移动1列.


小智 5

您也可以尝试制作一个 2x3 的子图,使最后一个不可见,并像这样设置第 4 和第 5 个图的坐标:

fig, axes = plt.subplots(2,3, figsize=(15,10))
axes[1][2].set_visible(False)

axes[1][0].set_position([0.24,0.125,0.228,0.343])
axes[1][1].set_position([0.55,0.125,0.228,0.343])
Run Code Online (Sandbox Code Playgroud)

这是一个可以灵活操作的快速而肮脏的过程。