您可以在matplotlib中创建非均匀可重复图吗

时间:2018-10-23 17:51:29

标签: python matplotlib grid subplot

我正在尝试创建一个具有许多非均匀子图的图形。我希望能够使用可迭代的索引创建图,因此不必单独创建每个图。

我可以使用fig,ax = plt.subplots(5)创建一系列统一的子图,其中可以使用ax [i]绘制到各个轴。

fig, ax = plt.subplots(5)

展望未来,我可以使用ax [i]和ax [0] .plt等来绘制每个图。

但是我希望能够创建一系列如下所示的图:

gridsize = (10,3)
fig = plt.figure(figsize=(5,3))
ax0 = plt.subplot2grid(gridsize, (0, 0), colspan=3, rowspan=1)

for i in range(1,5):
    ax1 = plt.subplot2grid(gridsize, (i, 0), colspan=2, rowspan=1)
    ax2 = plt.subplot2grid(gridsize, (i, 2), colspan=2, rowspan=1)

我可以在上面使用ax [i]调用每个图。

有人有什么想法吗?谢谢。

1 个答案:

答案 0 :(得分:0)

您可以将轴附加到列表中,从中为各个项目建立索引或对其进行迭代。

import numpy as np
import matplotlib.pyplot as plt

gridsize = (10,3)
fig = plt.figure(figsize=(5,3))
ax0 = plt.subplot2grid(gridsize, (0, 0), colspan=3, rowspan=1)

ax = [ax0]

for i in range(1,5):
    ax.append(plt.subplot2grid(gridsize, (i, 0), colspan=2, rowspan=1))
    ax.append(plt.subplot2grid(gridsize, (i, 2), colspan=2, rowspan=1))

## Now plot to those axes:

for i in range(2*4+1):
    ax[i].plot(np.arange(14),np.random.randn(14))

for axi in ax:
    axi.plot(np.arange(14),np.random.randn(14))


plt.show()